Subversion Repositories Kolibri OS

Rev

Rev 4789 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2517 leency 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
7119 dunkaist 3
;; Copyright (C) KolibriOS team 2004-2017. All rights reserved. ;;
2517 leency 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
;============================================================================
9
; This file should be used to generate skins of new standard
10
;============================================================================
11
; skin file structure:
12
;----------------------------------------------------------------------------
13
;  header:
14
;   dd 'SKIN'
15
;   dd = version (1 for now)
16
;   dd @ params
17
;   dd @ buttons
18
;   dd @ bitmaps
19
; ...
20
;----------------------------------------------------------------------------
21
; NOTE: order of sections listed below is insignificant
22
;       since they're identified by pointer in above header
23
;----------------------------------------------------------------------------
24
; ...
25
;  params:
26
;   dd = skin height
27
;   dw = right margin
28
;   dw = left margin
29
;   dw = bottom margin
30
;   dw = top margin
31
;   dd = inner line color
32
;   dd = outer line color
33
;   dd = frame color
34
;   dd = dtp file size
35
;   ?? = dtp file itself
36
; ...
37
;----------------------------------------------------------------------------
38
; ...
39
;  buttons:
40
;   dd = button type (1 = close, 2 = minimize)
41
;   dw = left button coord (could be negative)
42
;   dw = top button coord (could be negative)
43
;   dw = button width
44
;   dw = button height
45
;   ... etc for all buttons
46
;   dd = 0 (end of buttons list)
47
; ...
48
;----------------------------------------------------------------------------
49
; ...
50
;  bitmaps:
51
;   dw = bitmap kind (1 = left, 2 = oper, 3 = base)
52
;   dw = bitmap type (1 = active, 0 = inactive)
53
;   dd @ bitmap
54
;   ... etc for all bitmaps
55
;   dd 0 (end of bitmaps list)
56
; ...
57
;----------------------------------------------------------------------------
58
; ...
59
;  bitmap:
60
;   dd = bitmap width
61
;   dd = bitmap height
62
;   ?? = raw bitmap data
63
;   ... etc for all bitmaps
64
; ...
65
;============================================================================
66
 
67
dd 'SKIN',1,__params__,__buttons__,__bitmaps__
68
 
69
struc BITMAPFILEHEADER {
70
  .bfType      dw ? ; WORD
71
  .bfSize      dd ? ; DWORD
72
  .bfReserved1 dw ? ; WORD
73
  .bfReserved2 dw ? ; WORD
74
  .bfOffBits   dd ? ; DWORD
75
}
76
 
77
struc BITMAPINFOHEADER {
78
  .biSize          dd ? ; DWORD
79
  .biWidth         dd ? ; LONG
80
  .biHeight        dd ? ; LONG
81
  .biPlanes        dw ? ; WORD
82
  .biBitCount      dw ? ; WORD
83
  .biCompression   dd ? ; DWORD
84
  .biSizeImage     dd ? ; DWORD
85
  .biXPelsPerMeter dd ? ; LONG
86
  .biYPelsPerMeter dd ? ; LONG
87
  .biClrUsed       dd ? ; DWORD
88
  .biClrImportant  dd ? ; DWORD
89
}
90
 
91
struc _bmp {
92
  .h BITMAPFILEHEADER
93
  .i BITMAPINFOHEADER
94
}
95
virtual at 0
96
  _bmp _bmp
97
end virtual
98
 
99
macro BITMAP _name*,_fname*
100
{
101
  local w,h,a,r,g,b
102
  virtual at 0
7119 dunkaist 103
    _file equ _#_name
104
    _file::
2517 leency 105
    file _fname
106
  end virtual
7119 dunkaist 107
  load w dword from _file:_bmp.i.biWidth
108
  load h dword from _file:_bmp.i.biHeight
109
  load hsize dword from _file:_bmp.h.bfOffBits
2517 leency 110
  align 4
111
  label _name
112
    .width  = w
113
    .height = h
114
  dd w,h
7119 dunkaist 115
  a=hsize+(w*3+(w mod 4))*(h-1)
2517 leency 116
  size = $
117
  repeat h
118
    repeat w
7119 dunkaist 119
      load r from _file:a+0
120
      load g from _file:a+1
121
      load b from _file:a+2
2517 leency 122
      db r,g,b
123
      a=a+3
124
    end repeat
125
    a=a-w*3*2-(w mod 4)
126
  end repeat
127
}
128
 
129
macro define_colors name,[col,val]
130
{
131
  common
132
    local a,b,c
133
  forward
134
    match =binner,col \{ a = val \}
135
    match =bouter,col \{ b = val \}
136
    match =bframe,col \{ c = val \}
137
  common
138
    name equ a,b,c
139
}
140
 
141
macro SKIN_PARAMS [a]
142
{
143
  common
7119 dunkaist 144
    local _height,_margins,_colors,_colors_1,_dtp
2517 leency 145
    __params__:
146
  forward
147
    match qq == ww,a
148
    \{
149
      match =height,qq \\{ _height = ww \\}
150
      match =margins,qq \\{
151
        match [q1:q2:q3:q4],ww
152
        \\\{
153
          _margins equ q3,q1,q4,q2
154
        \\\}
155
      \\}
156
      match =colors =active,qq
157
      \\{
158
        match [q10==q11:q20==q21:q30==q31],ww
159
        \\\{
160
          define_colors _colors,q10,q11,q20,q21,q30,q31
161
        \\\}
162
      \\}
163
      match =colors =inactive,qq
164
      \\{
165
        match [q10==q11:q20==q21:q30==q31],ww
166
        \\\{
167
          define_colors _colors_1,q10,q11,q20,q21,q30,q31
168
        \\\}
169
      \\}
170
      match =dtp,qq \\{ _dtp equ ww \\}
171
    \}
172
  common
173
    dd _height
174
    dw _margins
175
    dd _colors,_colors_1
7119 dunkaist 176
    dd @f - $ - 4
2517 leency 177
    file _dtp
7119 dunkaist 178
    @@:
2517 leency 179
}
180
 
181
macro SKIN_BUTTONS [a]
182
{
183
  common
184
    local btn
185
    __buttons__:
186
  forward
187
    match qq == ww,a
188
    \{
189
      btn = 0
190
      match =close,qq    \\{ btn = 1 \\}
191
      match =minimize,qq \\{ btn = 2 \\}
192
      match [q1:q2][q3:q4],ww
193
      \\{
194
        if btn <> 0
195
          dd btn
196
          dw q1,q2,q3,q4
197
        end if
198
      \\}
199
    \}
200
  common
201
    dd 0
202
}
203
 
204
macro SKIN_BITMAPS [a]
205
{
206
  common
207
    local bmp
208
    __bitmaps__:
209
  forward
210
    match qq == ww,a
211
    \{
212
      bmp=-1
213
      match qqq =active,qq   \\{ bmp = 1 \\}
214
      match qqq =inactive,qq \\{ bmp = 0 \\}
215
      match =left qqq,qq
216
      \\{
217
        if bmp >= 0
218
          dw 1,bmp
219
          dd ww
220
        end if
221
      \\}
222
      match =oper qqq,qq
223
      \\{
224
        if bmp >= 0
225
          dw 2,bmp
226
          dd ww
227
        end if
228
      \\}
229
      match =base qqq,qq
230
      \\{
231
        if bmp >= 0
232
          dw 3,bmp
233
          dd ww
234
        end if
235
      \\}
236
    \}
237
  common
238
    dd 0
239
}