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