summaryrefslogtreecommitdiffstats
path: root/styles/phase2/scaling.h
blob: bb478c0f09e560cfd7b4cadad6c629892705ce5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#ifndef __SCALING_H__
#define __SCALING_H__

#include <stdlib.h>
#include <math.h>

static int  QT3SCALE_MAX = 3 ;
static int  QT3SCALE = 1 ;

#define QT3SCALE_TAG_BUFFSIZE 3
static char QT3SCALE_TAG[QT3SCALE_TAG_BUFFSIZE] = { '1', 0, 0 } ;

//--- Information about current application font

const static TQFont        CurrentFont = TQApplication::font() ;
const static TQFontInfo    CurrentFontInfo(CurrentFont)        ;
const static TQFontMetrics CurrentFontMetrics(CurrentFont)     ;


static int    FONT_Size   = 16    ; // Sans 12 pixel size
static double FONT_Scale  =  1.00 ; // 96 DPI

//------------------------------------------------------------------------------
//  Functions called during style initialization
//------------------------------------------------------------------------------

static void
Generate_Scaling_Metrics(const QWidget * w = 0)
{
  //--- FONT_Size is an important metric for scaling widget elements

  FONT_Size = CurrentFontMetrics.ascent() + CurrentFontMetrics.descent() ;
  /* Alternative methods for initial computing FONT_Size
     with exmplary values displayed for Sans 10/12 fonts:
       CurrentFontMetrics.strikeOutPos() * 3                      ; // 12/15
       CurrentFontInfo.pixelSize()                                ; // 13/16
       CurrentFontMetrics.overlinePos()                           ; // 13/16
       CurrentFontMetrics.ascent() + CurrentFontMetrics.descent() ; // 14/18
       CurrentFontMetrics.height()                                ; // 15/19
  */
  if (FONT_Size % 2 != 0) FONT_Size++ ;

  //--- FONT_scale is also an important metric for scaling widget elements

  double Pixels_96dpi = 4 * CurrentFontInfo.pointSize() / 3 ;
    // Calculate font size relative to 96dpi
  FONT_Scale = (double)(int)((double)( FONT_Size / Pixels_96dpi )*4)/4 ;
    // Calculate font scaling relative to 96dpi in increments of 0.25

//fprintf(stderr,
//  "At the current %.2f scaling, a %d-point font is %d (%d) pixels high\n",
//  FONT_scale, FONT_points, FONT_size, FONT_height
//) ;
}

//------------------------------------------------------------------------------

void Set_QT3SCALE()
{
  QT3SCALE = 1 ;
  const char *QT3SCALE_env = getenv("QT3SCALE");
  if ( QT3SCALE_env != NULL ) {
    int  QT3SCALE_int = atoi(QT3SCALE_env) ;
    if ( QT3SCALE_int > 1 && QT3SCALE_int <= QT3SCALE_MAX )
      QT3SCALE = QT3SCALE_int ;
  }
  snprintf(QT3SCALE_TAG, QT3SCALE_TAG_BUFFSIZE, "%d", QT3SCALE) ;
}

//------------------------------------------------------------------------------

/*
    QStyle::PE_ButtonCommand - button used to initiate an action, for example, a QPushButton.
    QStyle::PE_ButtonDefault - this button is the default button, e.g. in a dialog.
    QStyle::PE_ButtonBevel - generic button bevel.
    QStyle::PE_ButtonTool - tool button, for example, a QToolButton.
    QStyle::PE_ButtonDropDown - drop down button, for example, a tool button that displays a popup menu, for example, QPopupMenu.

    QStyle::PE_FocusRect - generic focus indicator.

    QStyle::PE_ArrowUp - up arrow.
    QStyle::PE_ArrowDown - down arrow.
    QStyle::PE_ArrowRight - right arrow.
    QStyle::PE_ArrowLeft - left arrow.

    QStyle::PE_SpinWidgetUp - up symbol for a spin widget, for example a QSpinBox.
    QStyle::PE_SpinWidgetDown - down symbol for a spin widget.
    QStyle::PE_SpinWidgetPlus - increase symbol for a spin widget.
    QStyle::PE_SpinWidgetMinus - decrease symbol for a spin widget.

    QStyle::PE_Indicator - on/off indicator, for example, a QCheckBox.
    QStyle::PE_IndicatorMask - bitmap mask for an indicator.
    QStyle::PE_ExclusiveIndicator - exclusive on/off indicator, for example, a QRadioButton.
    QStyle::PE_ExclusiveIndicatorMask - bitmap mask for an exclusive indicator.

    QStyle::PE_DockWindowHandle - tear off handle for dock windows and toolbars, for example QDockWindows and QToolBars.
    QStyle::PE_DockWindowSeparator - item separator for dock window and toolbar contents.
    QStyle::PE_DockWindowResizeHandle - resize handle for dock windows.
    QStyle::PE_Splitter - splitter handle; see also QSplitter.

    QStyle::PE_Panel - generic panel frame; see also QFrame.
    QStyle::PE_PanelPopup - panel frame for popup windows/menus; see also QPopupMenu.
    QStyle::PE_PanelMenuBar - panel frame for menu bars.
    QStyle::PE_PanelDockWindow - panel frame for dock windows and toolbars.
    QStyle::PE_PanelTabWidget - panel frame for tab widgets.
    QStyle::PE_PanelLineEdit - panel frame for line edits.
    QStyle::PE_PanelGroupBox - panel frame for group boxes.
    QStyle::PE_TabBarBase - area below tabs in a tab widget, for example, QTab.

    QStyle::PE_HeaderSection - section of a list or table header; see also QHeader.
    QStyle::PE_HeaderArrow - arrow used to indicate sorting on a list or table header
    QStyle::PE_StatusBarSection - section of a status bar; see also QStatusBar.

    QStyle::PE_GroupBoxFrame - frame around a group box; see also QGroupBox.
    QStyle::PE_WindowFrame - frame around a MDI window or a docking window 

    QStyle::PE_Separator - generic separator.

    QStyle::PE_SizeGrip - window resize handle; see also QSizeGrip.

    QStyle::PE_CheckMark - generic check mark; see also QCheckBox.

    QStyle::PE_ScrollBarAddLine - scrollbar line increase indicator (i.e. scroll down); see also QScrollBar.
    QStyle::PE_ScrollBarSubLine - scrollbar line decrease indicator (i.e. scroll up).
    QStyle::PE_ScrollBarAddPage - scolllbar page increase indicator (i.e. page down).
    QStyle::PE_ScrollBarSubPage - scrollbar page decrease indicator (i.e. page up).
    QStyle::PE_ScrollBarSlider - scrollbar slider
    QStyle::PE_ScrollBarFirst - scrollbar first line indicator (i.e. home).
    QStyle::PE_ScrollBarLast - scrollbar last line indicator (i.e. end).

    QStyle::PE_ProgressBarChunk - section of a progress bar indicator; see also QProgressBar.
    QStyle::PE_CheckListController - controller part of a listview item
    QStyle::PE_CheckListIndicator - checkbox part of a listview item
    QStyle::PE_CheckListExclusiveIndicator - radiobutton part of a listview item
    QStyle::PE_RubberBand - rubber band used in such things as iconview
    QStyle::PE_CustomBase - base value for custom PrimitiveElements. All values above this are reserved for custom use. Custom values must be greater than this value.
 */

#endif