All pastes #749856 Raw Edit

Anonymous

public text v1 · immutable
#749856 ·published 2007-10-25 23:47 UTC
rendered paste body
/* buttons grid */
/*
   With this system rows can easily have 1 to 4 buttons
   or create perfectly aligned 1 to 4 columns layouts

     < - - -    PANEL_XMAX  - - - >|
     < - - -      PANELX     - - - >

      .--  XSPACE side padding  --.
      |                           |
      |.- All CLM1                |
      ||     X2CLM2 -.  X3CLM3    |
      ||             |    |       |
     +v|-------------|----|-------v+
     <-/             |    |        |
     | [           But1          ] |     1 button of BUTW1 size
     <-             -/    |        |
     | [   But1    ]=[   But2    ] |     2 buttons of BUTW2 size
     <-                  -/        |
  v  | [ But1  ]=[ But2 ]#[ But3 ] |     3 buttons of BUTW3 size
  |  |                             |  v
  ^  | [But1]#[But2]=[But3]#[But4] |  |  4 buttons of BUTW3 size
  |  <-      ^      ^      -\      |  ^
  |  +-------|------|-------|------+  |
  |          |      |       |         |
  '- YSPACE  '---.--'       '- X4CLM4 '- BUTH
 (row to row)    |
              Padding based in XSPACE (= normal, # +1 pix to make all match)

   Calls like uiBlockBeginAlign/uiBlockEndAlign will make the button
   to button space disappear if needed, forming a compact group, in some themes

   TODO: Figure relations, meaning and usage of
         PANELY, PANEL_YMAX, PANELW, PANELH
 */
#define PANELX          320
#define PANELY          0
#define PANELW          318
#define PANELH          204

#define XSPACE          10
#define YSPACE          6
#define PANEL_XMAX      (PANELX - XSPACE)
#define PANEL_YMAX      210

/* The widths follow 300, 150, 100 and 75, which is nice (discarding spacing)
   sadly spacers and integer rounding make 3 and 4 column complex cases
   so they better be manually set and checked following the comments */
#define BUTW1           (PANELX - (2 * XSPACE))
#define BUTW2           ((BUTW1 / 2) - XSPACE)
/* Manual calc so BUTW3 + XSPACE + BUTW3 + (XSPACE+1) + BUTW3 = BUTW1 */
/* Could be something like ((BUTW1/3)-(1+(2*XSPACE)) if starting with 300 */
#define BUTW3           93
/* This time BUTW4 + (XSPACE+1) + BUTW4 + XSPACE + BUTW4 + (XSPACE+1) + BUTW4 =
BUTW1 */
/* That would be ((BUTW1/4)-(2+(3*XSPACE)) if starting with 300 */
#define BUTW4           67
/* NOTE: Again, BUTW3 and BUTW4 values and formulas include manual tuning,
   retune if base BUTW1 stops being 300 pixels. You have been warned */
#define ICONBUTW        20
#define BUTH            22

/* X axis start positions of column presets */
/* First number declares how many columns total */
/* Second number declares the exact column it controls */
/* So X3CLM2 means X start position of 2nd button for a row of 3 buttons */
#define X1CLM1          XSPACE

#define X2CLM1          X1CLM1
#define X2CLM2          (X2CLM1 + BUTW2 + XSPACE)

#define X3CLM1          X1CLM1
#define X3CLM2          (X3CLM1 + BUTW3 + XSPACE)
/* By substracting from end we already get the extra 1 pix */
#define X3CLM3          (PANEL_XMAX - BUTW3)

#define X4CLM1          X1CLM1
/* Extra pix to reach the BUTW1 total size */
#define X4CLM2          (X4CLM1 + BUTW4 + XSPACE + 1)
#define X4CLM3          (X4CLM2 + BUTW4 + XSPACE)
/* By substracting from end we already get the other extra 1 pix */
#define X4CLM4          (PANEL_XMAX - BUTW4)
/* end buttons grid */