Gui Skin.cpp 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875
  1. /******************************************************************************/
  2. #include "stdafx.h"
  3. /******************************************************************************/
  4. /******************************************************************************/
  5. void EditGuiSkin::Button::copyTo(GuiSkin::Button &skin, C Project &proj)C
  6. {
  7. skin.normal =proj.gamePath(normal_id);
  8. skin.pushed =proj.gamePath(pushed_id.valid() ? pushed_id : normal_id);
  9. skin.disabled =proj.gamePath(disabled_id.valid() ? disabled_id : normal_id);
  10. skin.pushed_disabled=proj.gamePath(pushed_disabled_id.valid() ? pushed_disabled_id : pushed_id.valid() ? pushed_id : disabled_id.valid() ? disabled_id : normal_id);
  11. skin.text_style =proj.gamePath(text_style_id);
  12. }
  13. void EditGuiSkin::Button::includeIDs(MemPtr<UID> ids)C
  14. {
  15. Include(ids, normal_id);
  16. Include(ids, pushed_id);
  17. Include(ids, disabled_id);
  18. Include(ids, pushed_disabled_id);
  19. Include(ids, text_style_id);
  20. }
  21. bool EditGuiSkin::Button::newer(C Button &src)C
  22. {
  23. return normal>src.normal || pushed>src.pushed || disabled>src.disabled || pushed_disabled>src.pushed_disabled
  24. || normal_color>src.normal_color || pushed_color>src.pushed_color || disabled_color>src.disabled_color || pushed_disabled_color>src.pushed_disabled_color
  25. || text_size>src.text_size || text_padd>src.text_padd || text_style>src.text_style;
  26. }
  27. bool EditGuiSkin::Button::equal(C Button &src)C
  28. {
  29. return normal==src.normal && pushed==src.pushed && disabled==src.disabled && pushed_disabled==src.pushed_disabled
  30. && normal_color==src.normal_color && pushed_color==src.pushed_color && disabled_color==src.disabled_color && pushed_disabled_color==src.pushed_disabled_color
  31. && text_size==src.text_size && text_padd==src.text_padd && text_style==src.text_style;
  32. }
  33. void EditGuiSkin::Button::newData()
  34. {
  35. normal++; pushed++; disabled++; pushed_disabled++;
  36. normal_color++; pushed_color++; disabled_color++; pushed_disabled_color++;
  37. text_size++; text_padd++; text_style++;
  38. }
  39. bool EditGuiSkin::Button::sync(GuiSkin::Button &val, C Button &src, C GuiSkin::Button &src_val)
  40. {
  41. bool changed=false;
  42. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  43. changed|=Sync(pushed, src.pushed, pushed_id, src.pushed_id);
  44. changed|=Sync(disabled, src.disabled, disabled_id, src.disabled_id);
  45. changed|=Sync(pushed_disabled, src.pushed_disabled, pushed_disabled_id, src.pushed_disabled_id);
  46. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  47. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  48. changed|=Sync(pushed_color, src.pushed_color, val.pushed_color, src_val.pushed_color);
  49. changed|=Sync(disabled_color, src.disabled_color, val.disabled_color, src_val.disabled_color);
  50. changed|=Sync(pushed_disabled_color, src.pushed_disabled_color, val.pushed_disabled_color, src_val.pushed_disabled_color);
  51. changed|=Sync(text_size, src.text_size, val.text_size, src_val.text_size);
  52. changed|=Sync(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  53. return changed;
  54. }
  55. bool EditGuiSkin::Button::undo(GuiSkin::Button &val, C Button &src, C GuiSkin::Button &src_val)
  56. {
  57. bool changed=false;
  58. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  59. changed|=Undo(pushed, src.pushed, pushed_id, src.pushed_id);
  60. changed|=Undo(disabled, src.disabled, disabled_id, src.disabled_id);
  61. changed|=Undo(pushed_disabled, src.pushed_disabled, pushed_disabled_id, src.pushed_disabled_id);
  62. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  63. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  64. changed|=Undo(pushed_color, src.pushed_color, val.pushed_color, src_val.pushed_color);
  65. changed|=Undo(disabled_color, src.disabled_color, val.disabled_color, src_val.disabled_color);
  66. changed|=Undo(pushed_disabled_color, src.pushed_disabled_color, val.pushed_disabled_color, src_val.pushed_disabled_color);
  67. changed|=Undo(text_size, src.text_size, val.text_size, src_val.text_size);
  68. changed|=Undo(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  69. return changed;
  70. }
  71. bool EditGuiSkin::Button::save(File &f)C
  72. {
  73. f.cmpUIntV(0);
  74. f<<normal_id<<pushed_id<<disabled_id<<pushed_disabled_id<<text_style_id
  75. <<normal<<pushed<<disabled<<pushed_disabled
  76. <<normal_color<<pushed_color<<disabled_color<<pushed_disabled_color
  77. <<text_size<<text_padd<<text_style;
  78. return f.ok();
  79. }
  80. bool EditGuiSkin::Button::load(File &f)
  81. {
  82. reset(); switch(f.decUIntV())
  83. {
  84. case 0:
  85. {
  86. f>>normal_id>>pushed_id>>disabled_id>>pushed_disabled_id>>text_style_id
  87. >>normal>>pushed>>disabled>>pushed_disabled
  88. >>normal_color>>pushed_color>>disabled_color>>pushed_disabled_color
  89. >>text_size>>text_padd>>text_style;
  90. if(f.ok())return true;
  91. }break;
  92. }
  93. reset(); return false;
  94. }
  95. void EditGuiSkin::Button::reset() {T=Button();}
  96. void EditGuiSkin::ButtonImage::copyTo(GuiSkin::ButtonImage &skin, C Project &proj)C
  97. {
  98. ::EditGuiSkin::Button::copyTo(skin, proj);
  99. skin.image=proj.gamePath(image_id);
  100. }
  101. void EditGuiSkin::ButtonImage::includeIDs(MemPtr<UID> ids)C
  102. {
  103. ::EditGuiSkin::Button::includeIDs(ids);
  104. Include(ids, image_id);
  105. }
  106. bool EditGuiSkin::ButtonImage::newer(C ButtonImage &src)C
  107. {
  108. return ::EditGuiSkin::Button::newer(src) || image>src.image || image_color>src.image_color; // || image_color_add>src.image_color_add
  109. }
  110. bool EditGuiSkin::ButtonImage::equal(C ButtonImage &src)C
  111. {
  112. return ::EditGuiSkin::Button::equal(src) && image==src.image && image_color==src.image_color; // && image_color_add==src.image_color_add
  113. }
  114. void EditGuiSkin::ButtonImage::newData()
  115. {
  116. ::EditGuiSkin::Button::newData(); image++; image_color++; // image_color_add++;
  117. }
  118. bool EditGuiSkin::ButtonImage::sync(GuiSkin::ButtonImage &val, C ButtonImage &src, C GuiSkin::ButtonImage &src_val)
  119. {
  120. bool changed=::EditGuiSkin::Button::sync(val, src, src_val);
  121. changed|=Sync(image, src.image, image_id, src.image_id);
  122. changed|=Sync(image_color, src.image_color, val.image_color, src_val.image_color);
  123. //changed|=Sync(image_color_add, src.image_color_add, val.image_color_add, src_val.image_color_add);
  124. return changed;
  125. }
  126. bool EditGuiSkin::ButtonImage::undo(GuiSkin::ButtonImage &val, C ButtonImage &src, C GuiSkin::ButtonImage &src_val)
  127. {
  128. bool changed=::EditGuiSkin::Button::undo(val, src, src_val);
  129. changed|=Undo(image, src.image, image_id, src.image_id);
  130. changed|=Undo(image_color, src.image_color, val.image_color, src_val.image_color);
  131. //changed|=Undo(image_color_add, src.image_color_add, val.image_color_add, src_val.image_color_add);
  132. return changed;
  133. }
  134. bool EditGuiSkin::ButtonImage::save(File &f)C
  135. {
  136. f.cmpUIntV(0);
  137. ::EditGuiSkin::Button::save(f);
  138. f<<image_id<<image<<image_color;
  139. return f.ok();
  140. }
  141. bool EditGuiSkin::ButtonImage::load(File &f)
  142. {
  143. reset(); switch(f.decUIntV())
  144. {
  145. case 0: if(::EditGuiSkin::Button::load(f))
  146. {
  147. f>>image_id>>image>>image_color;
  148. if(f.ok())return true;
  149. }break;
  150. }
  151. reset(); return false;
  152. }
  153. void EditGuiSkin::ButtonImage::reset() {T=ButtonImage();}
  154. void EditGuiSkin::CheckBox::copyTo(GuiSkin::CheckBox &skin, C Project &proj)C
  155. {
  156. skin.off =proj.gamePath( off_id);
  157. skin.on =proj.gamePath( on_id);
  158. skin.multi=proj.gamePath(multi_id);
  159. }
  160. void EditGuiSkin::CheckBox::includeIDs(MemPtr<UID> ids)C
  161. {
  162. Include(ids, off_id);
  163. Include(ids, on_id);
  164. Include(ids, multi_id);
  165. }
  166. bool EditGuiSkin::CheckBox::newer(C CheckBox &src)C
  167. {
  168. return off>src.off || on>src.on || multi>src.multi || normal_color>src.normal_color || disabled_color>src.disabled_color;
  169. }
  170. bool EditGuiSkin::CheckBox::equal(C CheckBox &src)C
  171. {
  172. return off==src.off && on==src.on && multi==src.multi && normal_color==src.normal_color && disabled_color==src.disabled_color;
  173. }
  174. void EditGuiSkin::CheckBox::newData()
  175. {
  176. off++; on++; multi++; normal_color++; disabled_color++;
  177. }
  178. bool EditGuiSkin::CheckBox::sync(GuiSkin::CheckBox &val, C CheckBox &src, C GuiSkin::CheckBox &src_val)
  179. {
  180. bool changed=false;
  181. changed|=Sync(off, src.off, off_id, src.off_id);
  182. changed|=Sync(on , src.on , on_id, src.on_id);
  183. changed|=Sync(multi, src.multi, multi_id, src.multi_id);
  184. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  185. changed|=Sync(disabled_color, src.disabled_color, val.disabled_color, src_val.disabled_color);
  186. return changed;
  187. }
  188. bool EditGuiSkin::CheckBox::undo(GuiSkin::CheckBox &val, C CheckBox &src, C GuiSkin::CheckBox &src_val)
  189. {
  190. bool changed=false;
  191. changed|=Undo(off, src.off, off_id, src.off_id);
  192. changed|=Undo(on , src.on , on_id, src.on_id);
  193. changed|=Undo(multi, src.multi, multi_id, src.multi_id);
  194. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  195. changed|=Undo(disabled_color, src.disabled_color, val.disabled_color, src_val.disabled_color);
  196. return changed;
  197. }
  198. bool EditGuiSkin::CheckBox::save(File &f)C
  199. {
  200. f.cmpUIntV(0);
  201. f<<off_id<<on_id<<multi_id
  202. <<off<<on<<multi
  203. <<normal_color<<disabled_color;
  204. return f.ok();
  205. }
  206. bool EditGuiSkin::CheckBox::load(File &f)
  207. {
  208. reset(); switch(f.decUIntV())
  209. {
  210. case 0:
  211. {
  212. f>>off_id>>on_id>>multi_id
  213. >>off>>on>>multi
  214. >>normal_color>>disabled_color;
  215. if(f.ok())return true;
  216. }break;
  217. }
  218. reset(); return false;
  219. }
  220. void EditGuiSkin::CheckBox::reset() {T=CheckBox();}
  221. void EditGuiSkin::ComboBox::copyTo(GuiSkin::ComboBox &skin, C Project &proj)C
  222. {
  223. ::EditGuiSkin::ButtonImage::copyTo(skin, proj);
  224. }
  225. void EditGuiSkin::ComboBox::includeIDs(MemPtr<UID> ids)C
  226. {
  227. ::EditGuiSkin::ButtonImage::includeIDs(ids);
  228. }
  229. bool EditGuiSkin::ComboBox::newer(C ComboBox &src)C
  230. {
  231. return ::EditGuiSkin::ButtonImage::newer(src);
  232. }
  233. bool EditGuiSkin::ComboBox::equal(C ComboBox &src)C
  234. {
  235. return ::EditGuiSkin::ButtonImage::equal(src);
  236. }
  237. void EditGuiSkin::ComboBox::newData()
  238. {
  239. ::EditGuiSkin::ButtonImage::newData();
  240. }
  241. bool EditGuiSkin::ComboBox::sync(GuiSkin::ComboBox &val, C ComboBox &src, C GuiSkin::ComboBox &src_val)
  242. {
  243. bool changed=::EditGuiSkin::ButtonImage::sync(val, src, src_val);
  244. return changed;
  245. }
  246. bool EditGuiSkin::ComboBox::undo(GuiSkin::ComboBox &val, C ComboBox &src, C GuiSkin::ComboBox &src_val)
  247. {
  248. bool changed=::EditGuiSkin::ButtonImage::undo(val, src, src_val);
  249. return changed;
  250. }
  251. bool EditGuiSkin::ComboBox::save(File &f)C
  252. {
  253. f.cmpUIntV(0);
  254. return ::EditGuiSkin::ButtonImage::save(f);
  255. }
  256. bool EditGuiSkin::ComboBox::load(File &f)
  257. {
  258. reset(); switch(f.decUIntV())
  259. {
  260. case 0: if(::EditGuiSkin::ButtonImage::load(f))
  261. {
  262. if(f.ok())return true;
  263. }break;
  264. }
  265. reset(); return false;
  266. }
  267. void EditGuiSkin::ComboBox::reset() {T=ComboBox();}
  268. void EditGuiSkin::Desc::copyTo(GuiSkin::Desc &skin, C Project &proj)C
  269. {
  270. skin.normal =proj.gamePath(normal_id);
  271. skin.text_style=proj.gamePath(text_style_id);
  272. }
  273. void EditGuiSkin::Desc::includeIDs(MemPtr<UID> ids)C
  274. {
  275. Include(ids, normal_id);
  276. Include(ids, text_style_id);
  277. }
  278. bool EditGuiSkin::Desc::newer(C Desc &src)C
  279. {
  280. return normal>src.normal || normal_color>src.normal_color || padding>src.padding || text_style>src.text_style;
  281. }
  282. bool EditGuiSkin::Desc::equal(C Desc &src)C
  283. {
  284. return normal==src.normal && normal_color==src.normal_color && padding==src.padding && text_style==src.text_style;
  285. }
  286. void EditGuiSkin::Desc::newData()
  287. {
  288. normal++; normal_color++; padding++; text_style++;
  289. }
  290. bool EditGuiSkin::Desc::sync(GuiSkin::Desc &val, C Desc &src, C GuiSkin::Desc &src_val)
  291. {
  292. bool changed=false;
  293. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  294. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  295. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  296. changed|=Sync(padding, src.padding, val.padding, src_val.padding);
  297. return changed;
  298. }
  299. bool EditGuiSkin::Desc::undo(GuiSkin::Desc &val, C Desc &src, C GuiSkin::Desc &src_val)
  300. {
  301. bool changed=false;
  302. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  303. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  304. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  305. changed|=Undo(padding, src.padding, val.padding, src_val.padding);
  306. return changed;
  307. }
  308. bool EditGuiSkin::Desc::save(File &f)C
  309. {
  310. f.cmpUIntV(0);
  311. f<<normal_id<<text_style_id
  312. <<normal<<normal_color<<padding<<text_style;
  313. return f.ok();
  314. }
  315. bool EditGuiSkin::Desc::load(File &f)
  316. {
  317. reset(); switch(f.decUIntV())
  318. {
  319. case 0:
  320. {
  321. f>>normal_id>>text_style_id
  322. >>normal>>normal_color>>padding>>text_style;
  323. if(f.ok())return true;
  324. }break;
  325. }
  326. reset(); return false;
  327. }
  328. void EditGuiSkin::Desc::reset() {T=Desc();}
  329. void EditGuiSkin::IMM::copyTo(GuiSkin::IMM &skin, C Project &proj)C
  330. {
  331. skin.normal =proj.gamePath(normal_id);
  332. skin.text_style=proj.gamePath(text_style_id);
  333. }
  334. void EditGuiSkin::IMM::includeIDs(MemPtr<UID> ids)C
  335. {
  336. Include(ids, normal_id);
  337. Include(ids, text_style_id);
  338. }
  339. bool EditGuiSkin::IMM::newer(C IMM &src)C
  340. {
  341. return normal>src.normal || normal_color>src.normal_color || padding>src.padding || text_style>src.text_style;
  342. }
  343. bool EditGuiSkin::IMM::equal(C IMM &src)C
  344. {
  345. return normal==src.normal && normal_color==src.normal_color && padding==src.padding && text_style==src.text_style;
  346. }
  347. void EditGuiSkin::IMM::newData()
  348. {
  349. normal++; normal_color++; padding++; text_style++;
  350. }
  351. bool EditGuiSkin::IMM::sync(GuiSkin::IMM &val, C IMM &src, C GuiSkin::IMM &src_val)
  352. {
  353. bool changed=false;
  354. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  355. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  356. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  357. changed|=Sync(padding, src.padding, val.padding, src_val.padding);
  358. return changed;
  359. }
  360. bool EditGuiSkin::IMM::undo(GuiSkin::IMM &val, C IMM &src, C GuiSkin::IMM &src_val)
  361. {
  362. bool changed=false;
  363. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  364. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  365. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  366. changed|=Undo(padding, src.padding, val.padding, src_val.padding);
  367. return changed;
  368. }
  369. bool EditGuiSkin::IMM::save(File &f)C
  370. {
  371. f.cmpUIntV(0);
  372. f<<normal_id<<text_style_id
  373. <<normal<<normal_color<<padding<<text_style;
  374. return f.ok();
  375. }
  376. bool EditGuiSkin::IMM::load(File &f)
  377. {
  378. reset(); switch(f.decUIntV())
  379. {
  380. case 0:
  381. {
  382. f>>normal_id>>text_style_id
  383. >>normal>>normal_color>>padding>>text_style;
  384. if(f.ok())return true;
  385. }break;
  386. }
  387. reset(); return false;
  388. }
  389. void EditGuiSkin::IMM::reset() {T=IMM();}
  390. void EditGuiSkin::List::copyTo(GuiSkin::List &skin, C Project &proj)C
  391. {
  392. skin.cursor =proj.gamePath(cursor_id.valid() ? cursor_id : selection_id);
  393. skin.highlight =proj.gamePath(highlight_id);
  394. skin.selection =proj.gamePath(selection_id.valid() ? selection_id : cursor_id);
  395. skin.text_style =proj.gamePath(text_style_id);
  396. skin.resize_column=proj.gamePath(resize_column_id);
  397. column.copyTo(skin.column, proj);
  398. }
  399. void EditGuiSkin::List::includeIDs(MemPtr<UID> ids)C
  400. {
  401. Include(ids, cursor_id);
  402. Include(ids, highlight_id);
  403. Include(ids, selection_id);
  404. Include(ids, text_style_id);
  405. Include(ids, resize_column_id);
  406. column.includeIDs(ids);
  407. }
  408. bool EditGuiSkin::List::newer(C List &src)C
  409. {
  410. return cursor>src.cursor || highlight>src.highlight || selection>src.selection
  411. || cursor_color>src.cursor_color || highlight_color>src.highlight_color || selection_color>src.selection_color
  412. || text_style>src.text_style || resize_column>src.resize_column
  413. || column.newer(src.column);
  414. }
  415. bool EditGuiSkin::List::equal(C List &src)C
  416. {
  417. return cursor==src.cursor && highlight==src.highlight && selection==src.selection
  418. && cursor_color==src.cursor_color && highlight_color==src.highlight_color && selection_color==src.selection_color
  419. && text_style==src.text_style && resize_column==src.resize_column
  420. && column.equal(src.column);
  421. }
  422. void EditGuiSkin::List::newData()
  423. {
  424. cursor++; highlight++; selection++;
  425. cursor_color++; highlight_color++; selection_color++;
  426. text_style++; resize_column++;
  427. column.newData();
  428. }
  429. bool EditGuiSkin::List::sync(GuiSkin::List &val, C List &src, C GuiSkin::List &src_val)
  430. {
  431. bool changed=false;
  432. changed|=Sync(cursor, src.cursor, cursor_id, src.cursor_id);
  433. changed|=Sync(highlight, src.highlight, highlight_id, src.highlight_id);
  434. changed|=Sync(selection, src.selection, selection_id, src.selection_id);
  435. changed|=Sync(cursor_color, src.cursor_color, val.cursor_color, src_val.cursor_color);
  436. changed|=Sync(highlight_color, src.highlight_color, val.highlight_color, src_val.highlight_color);
  437. changed|=Sync(selection_color, src.selection_color, val.selection_color, src_val.selection_color);
  438. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  439. changed|=Sync(resize_column, src.resize_column, resize_column_id, src.resize_column_id);
  440. changed|=column.sync(val.column, src.column, src_val.column);
  441. return changed;
  442. }
  443. bool EditGuiSkin::List::undo(GuiSkin::List &val, C List &src, C GuiSkin::List &src_val)
  444. {
  445. bool changed=false;
  446. changed|=Undo(cursor, src.cursor, cursor_id, src.cursor_id);
  447. changed|=Undo(highlight, src.highlight, highlight_id, src.highlight_id);
  448. changed|=Undo(selection, src.selection, selection_id, src.selection_id);
  449. changed|=Undo(cursor_color, src.cursor_color, val.cursor_color, src_val.cursor_color);
  450. changed|=Undo(highlight_color, src.highlight_color, val.highlight_color, src_val.highlight_color);
  451. changed|=Undo(selection_color, src.selection_color, val.selection_color, src_val.selection_color);
  452. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  453. changed|=Undo(resize_column, src.resize_column, resize_column_id, src.resize_column_id);
  454. changed|=column.undo(val.column, src.column, src_val.column);
  455. return changed;
  456. }
  457. bool EditGuiSkin::List::save(File &f)C
  458. {
  459. f.cmpUIntV(1);
  460. f<<cursor_id<<highlight_id<<selection_id<<text_style_id<<resize_column_id
  461. <<cursor<<highlight<<selection
  462. <<cursor_color<<highlight_color<<selection_color
  463. <<text_style<<resize_column;
  464. column.save(f);
  465. return f.ok();
  466. }
  467. bool EditGuiSkin::List::load(File &f)
  468. {
  469. reset(); switch(f.decUIntV())
  470. {
  471. case 1:
  472. {
  473. f>>cursor_id>>highlight_id>>selection_id>>text_style_id>>resize_column_id
  474. >>cursor>>highlight>>selection
  475. >>cursor_color>>highlight_color>>selection_color
  476. >>text_style>>resize_column;
  477. if(column.load(f))
  478. if(f.ok())return true;
  479. }break;
  480. case 0:
  481. {
  482. f>>cursor_id>>highlight_id>>selection_id>>text_style_id
  483. >>cursor>>highlight>>selection
  484. >>cursor_color>>highlight_color>>selection_color
  485. >>text_style;
  486. if(column.load(f))
  487. if(f.ok())return true;
  488. }break;
  489. }
  490. reset(); return false;
  491. }
  492. void EditGuiSkin::List::reset() {T=List();}
  493. void EditGuiSkin::Menu::copyTo(GuiSkin::Menu &skin, C Project &proj)C
  494. {
  495. skin.normal =proj.gamePath(normal_id);
  496. skin.check =proj.gamePath(check_id);
  497. skin.sub_menu=proj.gamePath(sub_menu_id);
  498. }
  499. void EditGuiSkin::Menu::includeIDs(MemPtr<UID> ids)C
  500. {
  501. Include(ids, normal_id);
  502. Include(ids, check_id);
  503. Include(ids, sub_menu_id);
  504. }
  505. bool EditGuiSkin::Menu::newer(C Menu &src)C
  506. {
  507. return normal>src.normal || normal_color>src.normal_color
  508. || padding>src.padding
  509. || list_elm_height>src.list_elm_height
  510. || check>src.check || sub_menu>src.sub_menu
  511. || check_color>src.check_color || sub_menu_color>src.sub_menu_color;
  512. }
  513. bool EditGuiSkin::Menu::equal(C Menu &src)C
  514. {
  515. return normal==src.normal && normal_color==src.normal_color
  516. && padding==src.padding
  517. && list_elm_height==src.list_elm_height
  518. && check==src.check && sub_menu==src.sub_menu
  519. && check_color==src.check_color && sub_menu_color==src.sub_menu_color;
  520. }
  521. void EditGuiSkin::Menu::newData()
  522. {
  523. normal++; normal_color++;
  524. padding++;
  525. list_elm_height++;
  526. check++; sub_menu++;
  527. check_color++; sub_menu_color++;
  528. }
  529. bool EditGuiSkin::Menu::sync(GuiSkin::Menu &val, C Menu &src, C GuiSkin::Menu &src_val)
  530. {
  531. bool changed=false;
  532. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  533. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  534. changed|=Sync(padding, src.padding, val.padding, src_val.padding);
  535. changed|=Sync(list_elm_height, src.list_elm_height, val.list_elm_height, src_val.list_elm_height);
  536. changed|=Sync(check, src.check, check_id, src.check_id);
  537. changed|=Sync(sub_menu, src.sub_menu, sub_menu_id, src.sub_menu_id);
  538. changed|=Sync(check_color, src.check_color, val.check_color, src_val.check_color);
  539. changed|=Sync(sub_menu_color, src.sub_menu_color, val.sub_menu_color, src_val.sub_menu_color);
  540. return changed;
  541. }
  542. bool EditGuiSkin::Menu::undo(GuiSkin::Menu &val, C Menu &src, C GuiSkin::Menu &src_val)
  543. {
  544. bool changed=false;
  545. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  546. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  547. changed|=Undo(padding, src.padding, val.padding, src_val.padding);
  548. changed|=Undo(list_elm_height, src.list_elm_height, val.list_elm_height, src_val.list_elm_height);
  549. changed|=Undo(check, src.check, check_id, src.check_id);
  550. changed|=Undo(sub_menu, src.sub_menu, sub_menu_id, src.sub_menu_id);
  551. changed|=Undo(check_color, src.check_color, val.check_color, src_val.check_color);
  552. changed|=Undo(sub_menu_color, src.sub_menu_color, val.sub_menu_color, src_val.sub_menu_color);
  553. return changed;
  554. }
  555. bool EditGuiSkin::Menu::save(File &f)C
  556. {
  557. f.cmpUIntV(1);
  558. f<<normal_id<<check_id<<sub_menu_id
  559. <<normal<<normal_color
  560. <<padding
  561. <<list_elm_height
  562. <<check<<sub_menu
  563. <<check_color<<sub_menu_color;
  564. return f.ok();
  565. }
  566. bool EditGuiSkin::Menu::load(File &f)
  567. {
  568. reset(); switch(f.decUIntV())
  569. {
  570. case 1:
  571. {
  572. f>>normal_id>>check_id>>sub_menu_id
  573. >>normal>>normal_color
  574. >>padding
  575. >>list_elm_height
  576. >>check>>sub_menu
  577. >>check_color>>sub_menu_color;
  578. if(f.ok())return true;
  579. }break;
  580. case 0:
  581. {
  582. f>>normal_id>>check_id>>sub_menu_id
  583. >>normal>>normal_color
  584. >>padding
  585. >>check>>sub_menu
  586. >>check_color>>sub_menu_color;
  587. if(f.ok())return true;
  588. }break;
  589. }
  590. reset(); return false;
  591. }
  592. void EditGuiSkin::Menu::reset() {T=Menu();}
  593. void EditGuiSkin::MenuBar::copyTo(GuiSkin::MenuBar &skin, C Project &proj)C
  594. {
  595. skin.background=proj.gamePath(background_id);
  596. skin.highlight =proj.gamePath( highlight_id);
  597. skin.text_style=proj.gamePath(text_style_id);
  598. }
  599. void EditGuiSkin::MenuBar::includeIDs(MemPtr<UID> ids)C
  600. {
  601. Include(ids, background_id);
  602. Include(ids, highlight_id);
  603. Include(ids, text_style_id);
  604. }
  605. bool EditGuiSkin::MenuBar::newer(C MenuBar &src)C
  606. {
  607. return background>src.background || highlight>src.highlight || background_color>src.background_color || highlight_color>src.highlight_color
  608. || bar_height>src.bar_height || text_size>src.text_size || text_padd>src.text_padd
  609. || text_style>src.text_style;
  610. }
  611. bool EditGuiSkin::MenuBar::equal(C MenuBar &src)C
  612. {
  613. return background==src.background && highlight==src.highlight && background_color==src.background_color && highlight_color==src.highlight_color
  614. && bar_height==src.bar_height && text_size==src.text_size && text_padd==src.text_padd
  615. && text_style==src.text_style;
  616. }
  617. void EditGuiSkin::MenuBar::newData()
  618. {
  619. background++; highlight++; background_color++; highlight_color++;
  620. bar_height++; text_size++; text_padd++;
  621. text_style++;
  622. }
  623. bool EditGuiSkin::MenuBar::sync(GuiSkin::MenuBar &val, C MenuBar &src, C GuiSkin::MenuBar &src_val)
  624. {
  625. bool changed=false;
  626. changed|=Sync(background, src.background, background_id, src.background_id);
  627. changed|=Sync(highlight, src.highlight, highlight_id, src.highlight_id);
  628. changed|=Sync(background_color, src.background_color, val.background_color, src_val.background_color);
  629. changed|=Sync(highlight_color, src.highlight_color, val.highlight_color, src_val.highlight_color);
  630. changed|=Sync(bar_height, src.bar_height, val.bar_height, src_val.bar_height);
  631. changed|=Sync(text_size, src.text_size, val.text_size, src_val.text_size);
  632. changed|=Sync(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  633. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  634. return changed;
  635. }
  636. bool EditGuiSkin::MenuBar::undo(GuiSkin::MenuBar &val, C MenuBar &src, C GuiSkin::MenuBar &src_val)
  637. {
  638. bool changed=false;
  639. changed|=Undo(background, src.background, background_id, src.background_id);
  640. changed|=Undo(highlight, src.highlight, highlight_id, src.highlight_id);
  641. changed|=Undo(background_color, src.background_color, val.background_color, src_val.background_color);
  642. changed|=Undo(highlight_color, src.highlight_color, val.highlight_color, src_val.highlight_color);
  643. changed|=Undo(bar_height, src.bar_height, val.bar_height, src_val.bar_height);
  644. changed|=Undo(text_size, src.text_size, val.text_size, src_val.text_size);
  645. changed|=Undo(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  646. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  647. return changed;
  648. }
  649. bool EditGuiSkin::MenuBar::save(File &f)C
  650. {
  651. f.cmpUIntV(0);
  652. f<<background_id<<highlight_id<<text_style_id
  653. <<background<<highlight
  654. <<background_color<<highlight_color
  655. <<bar_height<<text_size<<text_padd
  656. <<text_style;
  657. return f.ok();
  658. }
  659. bool EditGuiSkin::MenuBar::load(File &f)
  660. {
  661. reset(); switch(f.decUIntV())
  662. {
  663. case 0:
  664. {
  665. f>>background_id>>highlight_id>>text_style_id
  666. >>background>>highlight
  667. >>background_color>>highlight_color
  668. >>bar_height>>text_size>>text_padd
  669. >>text_style;
  670. if(f.ok())return true;
  671. }break;
  672. }
  673. reset(); return false;
  674. }
  675. void EditGuiSkin::MenuBar::reset() {T=MenuBar();}
  676. void EditGuiSkin::Progress::copyTo(GuiSkin::Progress &skin, C Project &proj)C
  677. {
  678. skin.background=proj.gamePath(background_id);
  679. skin.progress =proj.gamePath( progress_id);
  680. skin.text_style=proj.gamePath(text_style_id);
  681. }
  682. void EditGuiSkin::Progress::includeIDs(MemPtr<UID> ids)C
  683. {
  684. Include(ids, background_id);
  685. Include(ids, progress_id);
  686. Include(ids, text_style_id);
  687. }
  688. bool EditGuiSkin::Progress::newer(C Progress &src)C
  689. {
  690. return background>src.background || progress>src.progress
  691. || background_color>src.background_color || progress_color>src.progress_color
  692. || text_style>src.text_style || text_size>src.text_size
  693. || draw_progress_partial>src.draw_progress_partial;
  694. }
  695. bool EditGuiSkin::Progress::equal(C Progress &src)C
  696. {
  697. return background==src.background && progress==src.progress
  698. && background_color==src.background_color && progress_color==src.progress_color
  699. && text_style==src.text_style && text_size==src.text_size
  700. && draw_progress_partial==src.draw_progress_partial;
  701. }
  702. void EditGuiSkin::Progress::newData()
  703. {
  704. background++; progress++;
  705. background_color++; progress_color++;
  706. text_style++; text_size++;
  707. draw_progress_partial++;
  708. }
  709. bool EditGuiSkin::Progress::sync(GuiSkin::Progress &val, C Progress &src, C GuiSkin::Progress &src_val)
  710. {
  711. bool changed=false;
  712. changed|=Sync(background, src.background, background_id, src.background_id);
  713. changed|=Sync(progress, src.progress, progress_id, src.progress_id);
  714. changed|=Sync(background_color, src.background_color, val.background_color, src_val.background_color);
  715. changed|=Sync(progress_color, src.progress_color, val.progress_color, src_val.progress_color);
  716. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  717. changed|=Sync(text_size, src.text_size, val.text_size, src_val.text_size);
  718. changed|=Sync(draw_progress_partial, src.draw_progress_partial, val.draw_progress_partial, src_val.draw_progress_partial);
  719. return changed;
  720. }
  721. bool EditGuiSkin::Progress::undo(GuiSkin::Progress &val, C Progress &src, C GuiSkin::Progress &src_val)
  722. {
  723. bool changed=false;
  724. changed|=Undo(background, src.background, background_id, src.background_id);
  725. changed|=Undo(progress, src.progress, progress_id, src.progress_id);
  726. changed|=Undo(background_color, src.background_color, val.background_color, src_val.background_color);
  727. changed|=Undo(progress_color, src.progress_color, val.progress_color, src_val.progress_color);
  728. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  729. changed|=Undo(text_size, src.text_size, val.text_size, src_val.text_size);
  730. changed|=Undo(draw_progress_partial, src.draw_progress_partial, val.draw_progress_partial, src_val.draw_progress_partial);
  731. return changed;
  732. }
  733. bool EditGuiSkin::Progress::save(File &f)C
  734. {
  735. f.cmpUIntV(0);
  736. f<<background_id<<progress_id<<text_style_id
  737. <<background<<progress
  738. <<background_color<<progress_color
  739. <<text_style<<text_size
  740. <<draw_progress_partial;
  741. return f.ok();
  742. }
  743. bool EditGuiSkin::Progress::load(File &f)
  744. {
  745. reset(); switch(f.decUIntV())
  746. {
  747. case 0:
  748. {
  749. f>>background_id>>progress_id>>text_style_id
  750. >>background>>progress
  751. >>background_color>>progress_color
  752. >>text_style>>text_size
  753. >>draw_progress_partial;
  754. if(f.ok())return true;
  755. }break;
  756. }
  757. reset(); return false;
  758. }
  759. void EditGuiSkin::Progress::reset() {T=Progress();}
  760. void EditGuiSkin::Property::copyTo(GuiSkin::Property &skin, C Project &proj)C
  761. {
  762. value.copyTo(skin.value, proj);
  763. }
  764. void EditGuiSkin::Property::includeIDs(MemPtr<UID> ids)C
  765. {
  766. value.includeIDs(ids);
  767. }
  768. bool EditGuiSkin::Property::newer(C Property &src)C
  769. {
  770. return value.newer(src.value);
  771. }
  772. bool EditGuiSkin::Property::equal(C Property &src)C
  773. {
  774. return value.equal(src.value);
  775. }
  776. void EditGuiSkin::Property::newData()
  777. {
  778. value.newData();
  779. }
  780. bool EditGuiSkin::Property::sync(GuiSkin::Property &val, C Property &src, C GuiSkin::Property &src_val)
  781. {
  782. bool changed=false;
  783. changed|=value.sync(val.value, src.value, src_val.value);
  784. return changed;
  785. }
  786. bool EditGuiSkin::Property::undo(GuiSkin::Property &val, C Property &src, C GuiSkin::Property &src_val)
  787. {
  788. bool changed=false;
  789. changed|=value.undo(val.value, src.value, src_val.value);
  790. return changed;
  791. }
  792. bool EditGuiSkin::Property::save(File &f)C
  793. {
  794. f.cmpUIntV(0);
  795. value.save(f);
  796. return f.ok();
  797. }
  798. bool EditGuiSkin::Property::load(File &f)
  799. {
  800. reset(); switch(f.decUIntV())
  801. {
  802. case 0:
  803. {
  804. if(value.load(f))
  805. if(f.ok())return true;
  806. }break;
  807. }
  808. reset(); return false;
  809. }
  810. void EditGuiSkin::Property::reset() {T=Property();}
  811. void EditGuiSkin::Region::copyTo(GuiSkin::Region &skin, C Project &proj)C
  812. {
  813. skin.normal=proj.gamePath(normal_id);
  814. view.copyTo(skin.view, proj);
  815. }
  816. void EditGuiSkin::Region::includeIDs(MemPtr<UID> ids)C
  817. {
  818. Include(ids, normal_id);
  819. view.includeIDs(ids);
  820. }
  821. bool EditGuiSkin::Region::newer(C Region &src)C
  822. {
  823. return normal>src.normal || normal_color>src.normal_color || view.newer(src.view);
  824. }
  825. bool EditGuiSkin::Region::equal(C Region &src)C
  826. {
  827. return normal==src.normal && normal_color==src.normal_color && view.equal(src.view);
  828. }
  829. void EditGuiSkin::Region::newData()
  830. {
  831. normal++; normal_color++;
  832. view.newData();
  833. }
  834. bool EditGuiSkin::Region::sync(GuiSkin::Region &val, C Region &src, C GuiSkin::Region &src_val)
  835. {
  836. bool changed=false;
  837. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  838. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  839. changed|=view.sync(val.view, src.view, src_val.view);
  840. return changed;
  841. }
  842. bool EditGuiSkin::Region::undo(GuiSkin::Region &val, C Region &src, C GuiSkin::Region &src_val)
  843. {
  844. bool changed=false;
  845. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  846. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  847. changed|=view.undo(val.view, src.view, src_val.view);
  848. return changed;
  849. }
  850. bool EditGuiSkin::Region::save(File &f)C
  851. {
  852. f.cmpUIntV(0);
  853. f<<normal_id<<normal<<normal_color;
  854. view.save(f);
  855. return f.ok();
  856. }
  857. bool EditGuiSkin::Region::load(File &f)
  858. {
  859. reset(); switch(f.decUIntV())
  860. {
  861. case 0:
  862. {
  863. f>>normal_id>>normal>>normal_color;
  864. if(view.load(f))
  865. if(f.ok())return true;
  866. }break;
  867. }
  868. reset(); return false;
  869. }
  870. void EditGuiSkin::Region::reset() {T=Region();}
  871. void EditGuiSkin::SlideBar::copyTo(GuiSkin::SlideBar &skin, C Project &proj)C
  872. {
  873. skin.background=proj.gamePath(background_id);
  874. left .copyTo(skin.left , proj);
  875. center.copyTo(skin.center, proj);
  876. right .copyTo(skin.right , proj);
  877. }
  878. void EditGuiSkin::SlideBar::includeIDs(MemPtr<UID> ids)C
  879. {
  880. Include(ids, background_id);
  881. left .includeIDs(ids);
  882. center.includeIDs(ids);
  883. right .includeIDs(ids);
  884. }
  885. bool EditGuiSkin::SlideBar::newer(C SlideBar &src)C
  886. {
  887. return background>src.background || background_color>src.background_color || left.newer(src.left) || center.newer(src.center) || right.newer(src.right);
  888. }
  889. bool EditGuiSkin::SlideBar::equal(C SlideBar &src)C
  890. {
  891. return background==src.background && background_color==src.background_color && left.equal(src.left) && center.equal(src.center) && right.equal(src.right);
  892. }
  893. void EditGuiSkin::SlideBar::newData()
  894. {
  895. background++; background_color++; left.newData(); center.newData(); right.newData();
  896. }
  897. bool EditGuiSkin::SlideBar::sync(GuiSkin::SlideBar &val, C SlideBar &src, C GuiSkin::SlideBar &src_val)
  898. {
  899. bool changed=false;
  900. changed|=Sync(background, src.background, background_id, src.background_id);
  901. changed|=left.sync(val.left, src.left, src_val.left);
  902. changed|=center.sync(val.center, src.center, src_val.center);
  903. changed|=right.sync(val.right, src.right, src_val.right);
  904. return changed;
  905. }
  906. bool EditGuiSkin::SlideBar::undo(GuiSkin::SlideBar &val, C SlideBar &src, C GuiSkin::SlideBar &src_val)
  907. {
  908. bool changed=false;
  909. changed|=Undo(background, src.background, background_id, src.background_id);
  910. changed|=left.undo(val.left, src.left, src_val.left);
  911. changed|=center.undo(val.center, src.center, src_val.center);
  912. changed|=right.undo(val.right, src.right, src_val.right);
  913. return changed;
  914. }
  915. bool EditGuiSkin::SlideBar::save(File &f)C
  916. {
  917. f.cmpUIntV(0);
  918. f<<background_id<<background<<background_color;
  919. left .save(f);
  920. center.save(f);
  921. right .save(f);
  922. return f.ok();
  923. }
  924. bool EditGuiSkin::SlideBar::load(File &f)
  925. {
  926. reset(); switch(f.decUIntV())
  927. {
  928. case 0:
  929. {
  930. f>>background_id>>background>>background_color;
  931. if(left .load(f))
  932. if(center.load(f))
  933. if(right .load(f))
  934. if(f.ok())return true;
  935. }break;
  936. }
  937. reset(); return false;
  938. }
  939. void EditGuiSkin::SlideBar::reset() {T=SlideBar();}
  940. void EditGuiSkin::Slider::copyTo(GuiSkin::Slider &skin, C Project &proj)C
  941. {
  942. skin.background=proj.gamePath(background_id);
  943. skin.progress =proj.gamePath( progress_id);
  944. skin.slider =proj.gamePath( slider_id);
  945. }
  946. void EditGuiSkin::Slider::includeIDs(MemPtr<UID> ids)C
  947. {
  948. Include(ids, background_id);
  949. Include(ids, progress_id);
  950. Include(ids, slider_id);
  951. }
  952. bool EditGuiSkin::Slider::newer(C Slider &src)C
  953. {
  954. return background>src.background || progress>src.progress || slider>src.slider
  955. || background_color>src.background_color || progress_color>src.progress_color || slider_color>src.slider_color
  956. || background_shrink>src.background_shrink
  957. || draw_progress_partial>src.draw_progress_partial;
  958. }
  959. bool EditGuiSkin::Slider::equal(C Slider &src)C
  960. {
  961. return background==src.background && progress==src.progress && slider==src.slider
  962. && background_color==src.background_color && progress_color==src.progress_color && slider_color==src.slider_color
  963. && background_shrink==src.background_shrink
  964. && draw_progress_partial==src.draw_progress_partial;
  965. }
  966. void EditGuiSkin::Slider::newData()
  967. {
  968. background++; progress++; slider++;
  969. background_color++; progress_color++; slider_color++;
  970. background_shrink++;
  971. draw_progress_partial++;
  972. }
  973. bool EditGuiSkin::Slider::sync(GuiSkin::Slider &val, C Slider &src, C GuiSkin::Slider &src_val)
  974. {
  975. bool changed=false;
  976. changed|=Sync(background, src.background, background_id, src.background_id);
  977. changed|=Sync(progress, src.progress, progress_id, src.progress_id);
  978. changed|=Sync(slider, src.slider, slider_id, src.slider_id);
  979. changed|=Sync(background_color, src.background_color, val.background_color, src_val.background_color);
  980. changed|=Sync(progress_color, src.progress_color, val.progress_color, src_val.progress_color);
  981. changed|=Sync(slider_color, src.slider_color, val.slider_color, src_val.slider_color);
  982. changed|=Sync(background_shrink, src.background_shrink, val.background_shrink, src_val.background_shrink);
  983. changed|=Sync(draw_progress_partial, src.draw_progress_partial, val.draw_progress_partial, src_val.draw_progress_partial);
  984. return changed;
  985. }
  986. bool EditGuiSkin::Slider::undo(GuiSkin::Slider &val, C Slider &src, C GuiSkin::Slider &src_val)
  987. {
  988. bool changed=false;
  989. changed|=Undo(background, src.background, background_id, src.background_id);
  990. changed|=Undo(progress, src.progress, progress_id, src.progress_id);
  991. changed|=Undo(slider, src.slider, slider_id, src.slider_id);
  992. changed|=Undo(background_color, src.background_color, val.background_color, src_val.background_color);
  993. changed|=Undo(progress_color, src.progress_color, val.progress_color, src_val.progress_color);
  994. changed|=Undo(slider_color, src.slider_color, val.slider_color, src_val.slider_color);
  995. changed|=Undo(background_shrink, src.background_shrink, val.background_shrink, src_val.background_shrink);
  996. changed|=Undo(draw_progress_partial, src.draw_progress_partial, val.draw_progress_partial, src_val.draw_progress_partial);
  997. return changed;
  998. }
  999. bool EditGuiSkin::Slider::save(File &f)C
  1000. {
  1001. f.cmpUIntV(0);
  1002. f<<background_id<<progress_id<<slider_id
  1003. <<background<<progress<<slider
  1004. <<background_color<<progress_color<<slider_color
  1005. <<background_shrink
  1006. <<draw_progress_partial;
  1007. return f.ok();
  1008. }
  1009. bool EditGuiSkin::Slider::load(File &f)
  1010. {
  1011. reset(); switch(f.decUIntV())
  1012. {
  1013. case 0:
  1014. {
  1015. f>>background_id>>progress_id>>slider_id
  1016. >>background>>progress>>slider
  1017. >>background_color>>progress_color>>slider_color
  1018. >>background_shrink
  1019. >>draw_progress_partial;
  1020. if(f.ok())return true;
  1021. }break;
  1022. }
  1023. reset(); return false;
  1024. }
  1025. void EditGuiSkin::Slider::reset() {T=Slider();}
  1026. EditGuiSkin::Tab::Kind::Kind(C Button &button) : normal_id(button.normal_id), pushed_id(button.pushed_id) {}
  1027. bool EditGuiSkin::Tab::Kind::valid()C {return normal_id.valid() || pushed_id.valid();}
  1028. void EditGuiSkin::Tab::Kind::copyTo(Button &button)C
  1029. {
  1030. button.normal_id=normal_id;
  1031. button.pushed_id=pushed_id;
  1032. }
  1033. bool EditGuiSkin::Tab::Kind::apply(Kind &kind )C {if(valid()){kind=T; return true;} return false;}
  1034. bool EditGuiSkin::Tab::Kind::apply(Button &button)C {if(valid()){copyTo(button); return true;} return false;}
  1035. void EditGuiSkin::Tab::Kind::includeIDs(MemPtr<UID> ids)C
  1036. {
  1037. Include(ids, normal_id);
  1038. Include(ids, pushed_id);
  1039. }
  1040. bool EditGuiSkin::Tab::Kind::newer(C Kind &src)C {return normal> src.normal || pushed> src.pushed;}
  1041. bool EditGuiSkin::Tab::Kind::equal(C Kind &src)C {return normal==src.normal && pushed==src.pushed;}
  1042. void EditGuiSkin::Tab::Kind::newData() {normal++; pushed++;}
  1043. bool EditGuiSkin::Tab::Kind::sync(C Kind &src)
  1044. {
  1045. bool changed=false;
  1046. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  1047. changed|=Sync(pushed, src.pushed, pushed_id, src.pushed_id);
  1048. return changed;
  1049. }
  1050. bool EditGuiSkin::Tab::Kind::undo(C Kind &src)
  1051. {
  1052. bool changed=false;
  1053. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  1054. changed|=Undo(pushed, src.pushed, pushed_id, src.pushed_id);
  1055. return changed;
  1056. }
  1057. bool EditGuiSkin::Tab::Kind::save(File &f)C
  1058. {
  1059. f.cmpUIntV(0);
  1060. f<<normal_id<<pushed_id<<normal<<pushed;
  1061. return f.ok();
  1062. }
  1063. bool EditGuiSkin::Tab::Kind::load(File &f)
  1064. {
  1065. reset(); switch(f.decUIntV())
  1066. {
  1067. case 0:
  1068. {
  1069. f>>normal_id>>pushed_id>>normal>>pushed;
  1070. if(f.ok())return true;
  1071. }break;
  1072. }
  1073. reset(); return false;
  1074. }
  1075. void EditGuiSkin::Tab::Kind::reset() {T=Kind();}
  1076. void EditGuiSkin::Tab::copyTo(GuiSkin::Tab &skin, C Project &proj)C
  1077. {
  1078. }
  1079. void EditGuiSkin::Tab::includeIDs(MemPtr<UID> ids)C
  1080. {
  1081. ::EditGuiSkin::Button::includeIDs(ids);
  1082. left.includeIDs(ids); horizontal.includeIDs(ids); right.includeIDs(ids); top.includeIDs(ids); vertical.includeIDs(ids); bottom.includeIDs(ids);
  1083. top_left.includeIDs(ids); top_right.includeIDs(ids); bottom_left.includeIDs(ids); bottom_right.includeIDs(ids);
  1084. }
  1085. bool EditGuiSkin::Tab::newer(C Tab &src)C
  1086. {
  1087. return ::EditGuiSkin::Button::newer(src)
  1088. || left.newer(src.left) || horizontal.newer(src.horizontal) || right.newer(src.right)
  1089. || top.newer(src.top) || vertical.newer(src.vertical) || bottom.newer(src.bottom)
  1090. || top_left.newer(src.top_left) || top_right.newer(src.top_right) || bottom_left.newer(src.bottom_left) || bottom_right.newer(src.bottom_right);
  1091. }
  1092. bool EditGuiSkin::Tab::equal(C Tab &src)C
  1093. {
  1094. return ::EditGuiSkin::Button::equal(src)
  1095. && left.equal(src.left) && horizontal.equal(src.horizontal) && right.equal(src.right)
  1096. && top.equal(src.top) && vertical.equal(src.vertical) && bottom.equal(src.bottom)
  1097. && top_left.equal(src.top_left) && top_right.equal(src.top_right) && bottom_left.equal(src.bottom_left) && bottom_right.equal(src.bottom_right);
  1098. }
  1099. void EditGuiSkin::Tab::newData()
  1100. {
  1101. ::EditGuiSkin::Button::newData();
  1102. left.newData(); horizontal.newData(); right.newData(); top.newData(); vertical.newData(); bottom.newData();
  1103. top_left.newData(); top_right.newData(); bottom_left.newData(); bottom_right.newData();
  1104. }
  1105. bool EditGuiSkin::Tab::sync(GuiSkin::Tab &val, C Tab &src, C GuiSkin::Tab &src_val)
  1106. {
  1107. bool changed=::EditGuiSkin::Button::sync(val.left, src, src_val.left);
  1108. changed|=left .sync(src.left );
  1109. changed|=horizontal .sync(src.horizontal );
  1110. changed|=right .sync(src.right );
  1111. changed|=top .sync(src.top );
  1112. changed|=vertical .sync(src.vertical );
  1113. changed|=bottom .sync(src.bottom );
  1114. changed|=top_left .sync(src.top_left );
  1115. changed|=top_right .sync(src.top_right );
  1116. changed|=bottom_left .sync(src.bottom_left );
  1117. changed|=bottom_right.sync(src.bottom_right);
  1118. return changed;
  1119. }
  1120. bool EditGuiSkin::Tab::undo(GuiSkin::Tab &val, C Tab &src, C GuiSkin::Tab &src_val)
  1121. {
  1122. bool changed=::EditGuiSkin::Button::undo(val.left, src, src_val.left);
  1123. changed|=left .undo(src.left );
  1124. changed|=horizontal .undo(src.horizontal );
  1125. changed|=right .undo(src.right );
  1126. changed|=top .undo(src.top );
  1127. changed|=vertical .undo(src.vertical );
  1128. changed|=bottom .undo(src.bottom );
  1129. changed|=top_left .undo(src.top_left );
  1130. changed|=top_right .undo(src.top_right );
  1131. changed|=bottom_left .undo(src.bottom_left );
  1132. changed|=bottom_right.undo(src.bottom_right);
  1133. return changed;
  1134. }
  1135. bool EditGuiSkin::Tab::save(File &f)C
  1136. {
  1137. f.cmpUIntV(0);
  1138. ::EditGuiSkin::Button::save(f);
  1139. left .save(f);
  1140. horizontal .save(f);
  1141. right .save(f);
  1142. top .save(f);
  1143. vertical .save(f);
  1144. bottom .save(f);
  1145. top_left .save(f);
  1146. top_right .save(f);
  1147. bottom_left .save(f);
  1148. bottom_right.save(f);
  1149. return f.ok();
  1150. }
  1151. bool EditGuiSkin::Tab::load(File &f)
  1152. {
  1153. reset(); switch(f.decUIntV())
  1154. {
  1155. case 0: if(::EditGuiSkin::Button::load(f))
  1156. {
  1157. if(left .load(f))
  1158. if(horizontal .load(f))
  1159. if(right .load(f))
  1160. if(top .load(f))
  1161. if(vertical .load(f))
  1162. if(bottom .load(f))
  1163. if(top_left .load(f))
  1164. if(top_right .load(f))
  1165. if(bottom_left .load(f))
  1166. if(bottom_right.load(f))
  1167. if(f.ok())return true;
  1168. }break;
  1169. }
  1170. reset(); return false;
  1171. }
  1172. void EditGuiSkin::Tab::reset() {T=Tab();}
  1173. void EditGuiSkin::Text::copyTo(GuiSkin::Text &skin, C Project &proj)C
  1174. {
  1175. skin.text_style=proj.gamePath(text_style_id);
  1176. }
  1177. void EditGuiSkin::Text::includeIDs(MemPtr<UID> ids)C
  1178. {
  1179. Include(ids, text_style_id);
  1180. }
  1181. bool EditGuiSkin::Text::newer(C Text &src)C
  1182. {
  1183. return text_style>src.text_style;
  1184. }
  1185. bool EditGuiSkin::Text::equal(C Text &src)C
  1186. {
  1187. return text_style==src.text_style;
  1188. }
  1189. void EditGuiSkin::Text::newData()
  1190. {
  1191. text_style++;
  1192. }
  1193. bool EditGuiSkin::Text::sync(GuiSkin::Text &val, C Text &src, C GuiSkin::Text &src_val)
  1194. {
  1195. bool changed=false;
  1196. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  1197. return changed;
  1198. }
  1199. bool EditGuiSkin::Text::undo(GuiSkin::Text &val, C Text &src, C GuiSkin::Text &src_val)
  1200. {
  1201. bool changed=false;
  1202. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  1203. return changed;
  1204. }
  1205. bool EditGuiSkin::Text::save(File &f)C
  1206. {
  1207. f.cmpUIntV(0);
  1208. f<<text_style_id<<text_style;
  1209. return f.ok();
  1210. }
  1211. bool EditGuiSkin::Text::load(File &f)
  1212. {
  1213. reset(); switch(f.decUIntV())
  1214. {
  1215. case 0:
  1216. {
  1217. f>>text_style_id>>text_style;
  1218. if(f.ok())return true;
  1219. }break;
  1220. }
  1221. reset(); return false;
  1222. }
  1223. void EditGuiSkin::Text::reset() {T=Text();}
  1224. void EditGuiSkin::TextLine::copyTo(GuiSkin::TextLine &skin, C Project &proj)C
  1225. {
  1226. skin.normal=proj.gamePath(normal_id);
  1227. skin.disabled=proj.gamePath(disabled_id.valid() ? disabled_id : normal_id);
  1228. skin.text_style=proj.gamePath(text_style_id);
  1229. skin.find_image=proj.gamePath(find_image_id);
  1230. clear.copyTo(skin.clear, proj);
  1231. }
  1232. void EditGuiSkin::TextLine::includeIDs(MemPtr<UID> ids)C
  1233. {
  1234. Include(ids, normal_id);
  1235. Include(ids, disabled_id);
  1236. Include(ids, text_style_id);
  1237. Include(ids, find_image_id);
  1238. clear.includeIDs(ids);
  1239. }
  1240. bool EditGuiSkin::TextLine::newer(C TextLine &src)C
  1241. {
  1242. return normal>src.normal || disabled>src.disabled
  1243. || normal_panel_color>src.normal_panel_color || normal_text_color>src.normal_text_color
  1244. || disabled_panel_color>src.disabled_panel_color || disabled_text_color>src.disabled_text_color
  1245. || rect_color>src.rect_color
  1246. || text_size>src.text_size
  1247. || text_style>src.text_style
  1248. || find_image>src.find_image
  1249. || clear.newer(src.clear);
  1250. }
  1251. bool EditGuiSkin::TextLine::equal(C TextLine &src)C
  1252. {
  1253. return normal==src.normal && disabled==src.disabled
  1254. && normal_panel_color==src.normal_panel_color && normal_text_color==src.normal_text_color
  1255. && disabled_panel_color==src.disabled_panel_color && disabled_text_color==src.disabled_text_color
  1256. && rect_color==src.rect_color
  1257. && text_size==src.text_size
  1258. && text_style==src.text_style
  1259. && find_image==src.find_image
  1260. && clear.equal(src.clear);
  1261. }
  1262. void EditGuiSkin::TextLine::newData()
  1263. {
  1264. normal++; disabled++;
  1265. normal_panel_color++; normal_text_color++; disabled_panel_color++; disabled_text_color++;
  1266. rect_color++;
  1267. text_size++;
  1268. text_style++;
  1269. find_image++;
  1270. clear.newData();
  1271. }
  1272. bool EditGuiSkin::TextLine::sync(GuiSkin::TextLine &val, C TextLine &src, C GuiSkin::TextLine &src_val)
  1273. {
  1274. bool changed=false;
  1275. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  1276. changed|=Sync(disabled, src.disabled, disabled_id, src.disabled_id);
  1277. changed|=Sync(normal_panel_color, src.normal_panel_color, val.normal_panel_color, src_val.normal_panel_color);
  1278. changed|=Sync(normal_text_color, src.normal_text_color, val.normal_text_color, src_val.normal_text_color);
  1279. changed|=Sync(disabled_panel_color, src.disabled_panel_color, val.disabled_panel_color, src_val.disabled_panel_color);
  1280. changed|=Sync(disabled_text_color, src.disabled_text_color, val.disabled_text_color, src_val.disabled_text_color);
  1281. changed|=Sync(rect_color, src.rect_color, val.rect_color, src_val.rect_color);
  1282. changed|=Sync(text_size, src.text_size, val.text_size, src_val.text_size);
  1283. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  1284. changed|=Sync(find_image, src.find_image, find_image_id, src.find_image_id);
  1285. changed|=clear.sync(val.clear, src.clear, src_val.clear);
  1286. return changed;
  1287. }
  1288. bool EditGuiSkin::TextLine::undo(GuiSkin::TextLine &val, C TextLine &src, C GuiSkin::TextLine &src_val)
  1289. {
  1290. bool changed=false;
  1291. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  1292. changed|=Undo(disabled, src.disabled, disabled_id, src.disabled_id);
  1293. changed|=Undo(normal_panel_color, src.normal_panel_color, val.normal_panel_color, src_val.normal_panel_color);
  1294. changed|=Undo(normal_text_color, src.normal_text_color, val.normal_text_color, src_val.normal_text_color);
  1295. changed|=Undo(disabled_panel_color, src.disabled_panel_color, val.disabled_panel_color, src_val.disabled_panel_color);
  1296. changed|=Undo(disabled_text_color, src.disabled_text_color, val.disabled_text_color, src_val.disabled_text_color);
  1297. changed|=Undo(rect_color, src.rect_color, val.rect_color, src_val.rect_color);
  1298. changed|=Undo(text_size, src.text_size, val.text_size, src_val.text_size);
  1299. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  1300. changed|=Undo(find_image, src.find_image, find_image_id, src.find_image_id);
  1301. changed|=clear.undo(val.clear, src.clear, src_val.clear);
  1302. return changed;
  1303. }
  1304. bool EditGuiSkin::TextLine::save(File &f)C
  1305. {
  1306. f.cmpUIntV(3);
  1307. f<<normal_id<<disabled_id<<text_style_id<<find_image_id
  1308. <<normal<<disabled
  1309. <<normal_panel_color<<normal_text_color<<disabled_panel_color<<disabled_text_color<<rect_color
  1310. <<text_size
  1311. <<text_style
  1312. <<find_image;
  1313. if(clear.save(f))
  1314. return f.ok();
  1315. return false;
  1316. }
  1317. bool EditGuiSkin::TextLine::load(File &f)
  1318. {
  1319. reset(); switch(f.decUIntV())
  1320. {
  1321. case 3:
  1322. {
  1323. f>>normal_id>>disabled_id>>text_style_id>>find_image_id
  1324. >>normal>>disabled
  1325. >>normal_panel_color>>normal_text_color>>disabled_panel_color>>disabled_text_color>>rect_color
  1326. >>text_size
  1327. >>text_style
  1328. >>find_image;
  1329. if(clear.load(f))
  1330. if(f.ok())return true;
  1331. }break;
  1332. case 2:
  1333. {
  1334. f>>normal_id>>disabled_id>>text_style_id>>find_image_id
  1335. >>normal>>disabled
  1336. >>normal_panel_color>>normal_text_color>>disabled_panel_color>>disabled_text_color>>rect_color
  1337. >>text_style
  1338. >>find_image;
  1339. if(clear.load(f))
  1340. if(f.ok())return true;
  1341. }break;
  1342. case 1:
  1343. {
  1344. f>>normal_id>>disabled_id>>text_style_id>>find_image_id
  1345. >>normal>>disabled
  1346. >>normal_panel_color>>normal_text_color>>disabled_panel_color>>disabled_text_color>>rect_color
  1347. >>text_style
  1348. >>find_image;
  1349. if(f.ok())return true;
  1350. }break;
  1351. case 0:
  1352. {
  1353. f>>normal_id>>disabled_id>>text_style_id>>find_image_id
  1354. >>normal>>disabled
  1355. >>normal_panel_color>>disabled_panel_color>>rect_color
  1356. >>text_style
  1357. >>find_image;
  1358. normal_text_color=normal_panel_color; disabled_text_color=disabled_panel_color;
  1359. if(f.ok())return true;
  1360. }break;
  1361. }
  1362. reset(); return false;
  1363. }
  1364. void EditGuiSkin::TextLine::reset() {T=TextLine();}
  1365. void EditGuiSkin::Window::copyTo(GuiSkin::Window &skin, C Project &proj)C
  1366. {
  1367. skin.normal =proj.gamePath(normal_id.valid() ? normal_id : active_id.valid() ? active_id : normal_no_bar_id.valid() ? normal_no_bar_id : active_no_bar_id);
  1368. skin.active =proj.gamePath(active_id.valid() ? active_id : normal_id.valid() ? normal_id : active_no_bar_id.valid() ? active_no_bar_id : normal_no_bar_id);
  1369. skin.normal_no_bar =proj.gamePath(normal_no_bar_id.valid() ? normal_no_bar_id : active_no_bar_id.valid() ? active_no_bar_id : normal_id.valid() ? normal_id : active_id);
  1370. skin.active_no_bar =proj.gamePath(active_no_bar_id.valid() ? active_no_bar_id : normal_no_bar_id.valid() ? normal_no_bar_id : active_id.valid() ? active_id : normal_id);
  1371. skin.normal_text_style=proj.gamePath(normal_text_style_id.valid() ? normal_text_style_id : active_text_style_id);
  1372. skin.active_text_style=proj.gamePath(active_text_style_id.valid() ? active_text_style_id : normal_text_style_id);
  1373. minimize.copyTo(skin.minimize, proj);
  1374. maximize.copyTo(skin.maximize, proj);
  1375. close .copyTo(skin.close , proj);
  1376. }
  1377. void EditGuiSkin::Window::includeIDs(MemPtr<UID> ids)C
  1378. {
  1379. Include(ids, normal_id);
  1380. Include(ids, active_id);
  1381. Include(ids, normal_no_bar_id);
  1382. Include(ids, active_no_bar_id);
  1383. Include(ids, normal_text_style_id);
  1384. Include(ids, active_text_style_id);
  1385. minimize.includeIDs(ids);
  1386. maximize.includeIDs(ids);
  1387. close .includeIDs(ids);
  1388. }
  1389. bool EditGuiSkin::Window::newer(C Window &src)C
  1390. {
  1391. return normal>src.normal || active>src.active || normal_no_bar>src.normal_no_bar || active_no_bar>src.active_no_bar
  1392. || normal_color>src.normal_color || active_color>src.active_color
  1393. || normal_text_style>src.normal_text_style || active_text_style>src.active_text_style
  1394. || text_size>src.text_size || text_padd>src.text_padd || button_offset>src.button_offset
  1395. || minimize.newer(src.minimize) || maximize.newer(src.maximize) || close.newer(src.close);
  1396. }
  1397. bool EditGuiSkin::Window::equal(C Window &src)C
  1398. {
  1399. return normal==src.normal && active==src.active && normal_no_bar==src.normal_no_bar && active_no_bar==src.active_no_bar
  1400. && normal_color==src.normal_color && active_color==src.active_color
  1401. && normal_text_style==src.normal_text_style && active_text_style==src.active_text_style
  1402. && text_size==src.text_size && text_padd==src.text_padd && button_offset==src.button_offset
  1403. && minimize.equal(src.minimize) && maximize.equal(src.maximize) && close.equal(src.close);
  1404. }
  1405. void EditGuiSkin::Window::newData()
  1406. {
  1407. normal++; active++; normal_no_bar++; active_no_bar++;
  1408. normal_color++; active_color++;
  1409. normal_text_style++; active_text_style++;
  1410. text_size++; text_padd++; button_offset++;
  1411. minimize.newData(); maximize.newData(); close.newData();
  1412. }
  1413. bool EditGuiSkin::Window::sync(GuiSkin::Window &val, C Window &src, C GuiSkin::Window &src_val)
  1414. {
  1415. bool changed=false;
  1416. changed|=Sync(normal, src.normal, normal_id, src.normal_id);
  1417. changed|=Sync(active, src.active, active_id, src.active_id);
  1418. changed|=Sync(normal_no_bar, src.normal_no_bar, normal_no_bar_id, src.normal_no_bar_id);
  1419. changed|=Sync(active_no_bar, src.active_no_bar, active_no_bar_id, src.active_no_bar_id);
  1420. changed|=Sync(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  1421. changed|=Sync(active_color, src.active_color, val.active_color, src_val.active_color);
  1422. changed|=Sync(normal_text_style, src.normal_text_style, normal_text_style_id, src.normal_text_style_id);
  1423. changed|=Sync(active_text_style, src.active_text_style, active_text_style_id, src.active_text_style_id);
  1424. changed|=Sync(text_size, src.text_size, val.text_size, src_val.text_size);
  1425. changed|=Sync(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  1426. changed|=Sync(button_offset, src.button_offset, val.button_offset, src_val.button_offset);
  1427. changed|=minimize.sync(val.minimize, src.minimize, src_val.minimize);
  1428. changed|=maximize.sync(val.maximize, src.maximize, src_val.maximize);
  1429. changed|=close .sync(val.close , src.close , src_val.close );
  1430. return changed;
  1431. }
  1432. bool EditGuiSkin::Window::undo(GuiSkin::Window &val, C Window &src, C GuiSkin::Window &src_val)
  1433. {
  1434. bool changed=false;
  1435. changed|=Undo(normal, src.normal, normal_id, src.normal_id);
  1436. changed|=Undo(active, src.active, active_id, src.active_id);
  1437. changed|=Undo(normal_no_bar, src.normal_no_bar, normal_no_bar_id, src.normal_no_bar_id);
  1438. changed|=Undo(active_no_bar, src.active_no_bar, active_no_bar_id, src.active_no_bar_id);
  1439. changed|=Undo(normal_color, src.normal_color, val.normal_color, src_val.normal_color);
  1440. changed|=Undo(active_color, src.active_color, val.active_color, src_val.active_color);
  1441. changed|=Undo(normal_text_style, src.normal_text_style, normal_text_style_id, src.normal_text_style_id);
  1442. changed|=Undo(active_text_style, src.active_text_style, active_text_style_id, src.active_text_style_id);
  1443. changed|=Undo(text_size, src.text_size, val.text_size, src_val.text_size);
  1444. changed|=Undo(text_padd, src.text_padd, val.text_padd, src_val.text_padd);
  1445. changed|=Undo(button_offset, src.button_offset, val.button_offset, src_val.button_offset);
  1446. changed|=minimize.undo(val.minimize, src.minimize, src_val.minimize);
  1447. changed|=maximize.undo(val.maximize, src.maximize, src_val.maximize);
  1448. changed|=close .undo(val.close , src.close , src_val.close );
  1449. return changed;
  1450. }
  1451. bool EditGuiSkin::Window::save(File &f)C
  1452. {
  1453. f.cmpUIntV(1);
  1454. f<<normal_id<<active_id<<normal_no_bar_id<<active_no_bar_id
  1455. <<normal_text_style_id<<active_text_style_id
  1456. <<normal<<active<<normal_no_bar<<active_no_bar
  1457. <<normal_color<<active_color
  1458. <<normal_text_style<<active_text_style
  1459. <<text_size<<text_padd<<button_offset;
  1460. minimize.save(f);
  1461. maximize.save(f);
  1462. close .save(f);
  1463. return f.ok();
  1464. }
  1465. bool EditGuiSkin::Window::load(File &f)
  1466. {
  1467. reset(); switch(f.decUIntV())
  1468. {
  1469. case 1:
  1470. {
  1471. f>>normal_id>>active_id>>normal_no_bar_id>>active_no_bar_id
  1472. >>normal_text_style_id>>active_text_style_id
  1473. >>normal>>active>>normal_no_bar>>active_no_bar
  1474. >>normal_color>>active_color
  1475. >>normal_text_style>>active_text_style
  1476. >>text_size>>text_padd>>button_offset;
  1477. if(minimize.load(f))
  1478. if(maximize.load(f))
  1479. if(close .load(f))
  1480. if(f.ok())return true;
  1481. }break;
  1482. case 0:
  1483. {
  1484. f>>normal_id>>active_id>>normal_no_bar_id>>active_no_bar_id
  1485. >>normal_text_style_id>>active_text_style_id
  1486. >>normal>>active>>normal_no_bar>>active_no_bar
  1487. >>normal_color>>active_color
  1488. >>normal_text_style>>active_text_style
  1489. >>text_size>>text_padd;
  1490. if(minimize.load(f))
  1491. if(maximize.load(f))
  1492. if(close .load(f))
  1493. if(f.ok())return true;
  1494. }break;
  1495. }
  1496. reset(); return false;
  1497. }
  1498. void EditGuiSkin::Window::reset() {T=Window();}
  1499. void EditGuiSkin::Base::includeIDs(MemPtr<UID> ids)C
  1500. {
  1501. Include(ids, font_id);
  1502. Include(ids, text_style_id);
  1503. button.includeIDs(ids);
  1504. checkbox.includeIDs(ids);
  1505. combobox.includeIDs(ids);
  1506. desc.includeIDs(ids);
  1507. imm .includeIDs(ids);
  1508. list.includeIDs(ids);
  1509. menu.includeIDs(ids);
  1510. menubar.includeIDs(ids);
  1511. progress.includeIDs(ids);
  1512. property.includeIDs(ids);
  1513. region.includeIDs(ids);
  1514. slidebar.includeIDs(ids);
  1515. slider.includeIDs(ids);
  1516. tab.includeIDs(ids);
  1517. text.includeIDs(ids);
  1518. textline.includeIDs(ids);
  1519. window.includeIDs(ids);
  1520. }
  1521. void EditGuiSkin::Base::copyTo(GuiSkin &skin, C Project &proj)C
  1522. {
  1523. skin.font =proj.gamePath(font_id);
  1524. skin.text_style=proj.gamePath(text_style_id);
  1525. button.copyTo(skin.button, proj);
  1526. checkbox.copyTo(skin.checkbox, proj);
  1527. combobox.copyTo(skin.combobox, proj);
  1528. desc.copyTo(skin.desc, proj);
  1529. imm .copyTo(skin.imm , proj);
  1530. list.copyTo(skin.list, proj);
  1531. menu.copyTo(skin.menu, proj);
  1532. menubar.copyTo(skin.menubar, proj);
  1533. progress.copyTo(skin.progress, proj);
  1534. property.copyTo(skin.property, proj);
  1535. region.copyTo(skin.region, proj);
  1536. slidebar.copyTo(skin.slidebar, proj);
  1537. slider.copyTo(skin.slider, proj);
  1538. tab.copyTo(skin.tab, proj);
  1539. text.copyTo(skin.text, proj);
  1540. textline.copyTo(skin.textline, proj);
  1541. window.copyTo(skin.window, proj);
  1542. if(!skin.button.text_style)skin.button.text_style=skin.text_style;
  1543. if(!skin.combobox.text_style)skin.combobox.text_style=skin.button.text_style;
  1544. if(!skin.list.column.text_style)skin.list.column.text_style=skin.button.text_style;
  1545. if(!skin.property.value.text_style)skin.property.value.text_style=skin.button.text_style;
  1546. if(!skin.textline.clear.text_style)skin.textline.clear.text_style=skin.button.text_style;
  1547. if(!skin.desc.text_style)skin.desc.text_style=skin.text_style;
  1548. if(!skin.imm .text_style)skin.imm.text_style=skin.desc.text_style;
  1549. if(!skin.text.text_style)skin.text.text_style=skin.text_style;
  1550. if(!skin.list.text_style)skin.list.text_style=skin.text_style;
  1551. if(!skin.menubar.text_style)skin.menubar.text_style=skin.text_style;
  1552. if(!skin.progress.text_style)skin.progress.text_style=skin.text_style;
  1553. if(!skin.textline.text_style)skin.textline.text_style=skin.text_style;
  1554. if(!skin.window.normal_text_style)skin.window.normal_text_style=skin.text_style;
  1555. if(!skin.window.active_text_style)skin.window.active_text_style=skin.text_style;
  1556. // tabs
  1557. {
  1558. // prepare
  1559. Button temp=tab; // get text and colors
  1560. Tab::Kind hor, ver, any;
  1561. if(!tab.horizontal.apply(hor) && !tab.left.apply(hor) && !tab.right .apply(hor)){}
  1562. if(!tab.vertical .apply(ver) && !tab.top .apply(ver) && !tab.bottom.apply(ver)){}
  1563. if(!hor.apply(any) && !ver.apply(any)){}
  1564. if(!temp.text_style_id.valid())temp.text_style_id=skin.button.text_style.id(); // adjust text
  1565. // copy base data from main
  1566. skin.tab.horizontal=skin.tab.left;
  1567. skin.tab.right=skin.tab.left;
  1568. skin.tab.top=skin.tab.left;
  1569. skin.tab.vertical=skin.tab.left;
  1570. skin.tab.bottom=skin.tab.left;
  1571. skin.tab.top_left=skin.tab.left;
  1572. skin.tab.top_right=skin.tab.left;
  1573. skin.tab.bottom_left=skin.tab.left;
  1574. skin.tab.bottom_right=skin.tab.left;
  1575. // copy ID based
  1576. if(!tab.left .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.left, proj);
  1577. if(!tab.horizontal .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.horizontal, proj);
  1578. if(!tab.right .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.right, proj);
  1579. if(!tab.top .apply(temp) && !ver.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.top, proj);
  1580. if(!tab.vertical .apply(temp) && !ver.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.vertical, proj);
  1581. if(!tab.bottom .apply(temp) && !ver.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.bottom, proj);
  1582. if(!tab.top_left .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.top_left, proj);
  1583. if(!tab.top_right .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.top_right, proj);
  1584. if(!tab.bottom_left .apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.bottom_left, proj);
  1585. if(!tab.bottom_right.apply(temp) && !hor.apply(temp))any.copyTo(temp); temp.copyTo(skin.tab.bottom_right, proj);
  1586. }
  1587. }
  1588. bool EditGuiSkin::Base::newer(C Base &src)C
  1589. {
  1590. return background_color>src.background_color
  1591. || border_color>src.border_color
  1592. || mouse_highlight_color>src.mouse_highlight_color
  1593. || keyboard_highlight_color>src.keyboard_highlight_color
  1594. || font>src.font || text_style>src.text_style
  1595. || button.newer(src.button)
  1596. || checkbox.newer(src.checkbox)
  1597. || combobox.newer(src.combobox)
  1598. || desc.newer(src.desc)
  1599. || imm.newer(src.imm)
  1600. || list.newer(src.list)
  1601. || menu.newer(src.menu)
  1602. || menubar.newer(src.menubar)
  1603. || progress.newer(src.progress)
  1604. || property.newer(src.property)
  1605. || region.newer(src.region)
  1606. || slidebar.newer(src.slidebar)
  1607. || slider.newer(src.slider)
  1608. || tab.newer(src.tab)
  1609. || text.newer(src.text)
  1610. || textline.newer(src.textline)
  1611. || window.newer(src.window);
  1612. }
  1613. bool EditGuiSkin::Base::equal(C Base &src)C
  1614. {
  1615. return background_color==src.background_color
  1616. && border_color==src.border_color
  1617. && mouse_highlight_color==src.mouse_highlight_color
  1618. && keyboard_highlight_color==src.keyboard_highlight_color
  1619. && font==src.font && text_style==src.text_style
  1620. && button.equal(src.button)
  1621. && checkbox.equal(src.checkbox)
  1622. && combobox.equal(src.combobox)
  1623. && desc.equal(src.desc)
  1624. && imm.equal(src.imm)
  1625. && list.equal(src.list)
  1626. && menu.equal(src.menu)
  1627. && menubar.equal(src.menubar)
  1628. && progress.equal(src.progress)
  1629. && property.equal(src.property)
  1630. && region.equal(src.region)
  1631. && slidebar.equal(src.slidebar)
  1632. && slider.equal(src.slider)
  1633. && tab.equal(src.tab)
  1634. && text.equal(src.text)
  1635. && textline.equal(src.textline)
  1636. && window.equal(src.window);
  1637. }
  1638. void EditGuiSkin::Base::newData()
  1639. {
  1640. background_color++; border_color++; mouse_highlight_color++; keyboard_highlight_color++;
  1641. font++; text_style++;
  1642. button.newData();
  1643. checkbox.newData();
  1644. combobox.newData();
  1645. desc.newData();
  1646. imm.newData();
  1647. list.newData();
  1648. menu.newData();
  1649. menubar.newData();
  1650. progress.newData();
  1651. property.newData();
  1652. region.newData();
  1653. slidebar.newData();
  1654. slider.newData();
  1655. tab.newData();
  1656. text.newData();
  1657. textline.newData();
  1658. window.newData();
  1659. }
  1660. bool EditGuiSkin::Base::sync(GuiSkin &val, C Base &src, C GuiSkin &src_val)
  1661. {
  1662. bool changed=false;
  1663. changed|=Sync(background_color, src.background_color, val.background_color, src_val.background_color);
  1664. changed|=Sync(border_color, src.border_color, val.border_color, src_val.border_color);
  1665. changed|=Sync(mouse_highlight_color, src.mouse_highlight_color, val.mouse_highlight_color, src_val.mouse_highlight_color);
  1666. changed|=Sync(keyboard_highlight_color, src.keyboard_highlight_color, val.keyboard_highlight_color, src_val.keyboard_highlight_color);
  1667. changed|=Sync(font, src.font, font_id, src.font_id);
  1668. changed|=Sync(text_style, src.text_style, text_style_id, src.text_style_id);
  1669. changed|=button.sync(val.button, src.button, src_val.button);
  1670. changed|=checkbox.sync(val.checkbox, src.checkbox, src_val.checkbox);
  1671. changed|=combobox.sync(val.combobox, src.combobox, src_val.combobox);
  1672. changed|=desc.sync(val.desc, src.desc, src_val.desc);
  1673. changed|=imm.sync(val.imm, src.imm, src_val.imm);
  1674. changed|=list.sync(val.list, src.list, src_val.list);
  1675. changed|=menu.sync(val.menu, src.menu, src_val.menu);
  1676. changed|=menubar.sync(val.menubar, src.menubar, src_val.menubar);
  1677. changed|=progress.sync(val.progress, src.progress, src_val.progress);
  1678. changed|=property.sync(val.property, src.property, src_val.property);
  1679. changed|=region.sync(val.region, src.region, src_val.region);
  1680. changed|=slidebar.sync(val.slidebar, src.slidebar, src_val.slidebar);
  1681. changed|=slider.sync(val.slider, src.slider, src_val.slider);
  1682. changed|=tab.sync(val.tab, src.tab, src_val.tab);
  1683. changed|=text.sync(val.text, src.text, src_val.text);
  1684. changed|=textline.sync(val.textline, src.textline, src_val.textline);
  1685. changed|=window.sync(val.window, src.window, src_val.window);
  1686. return changed;
  1687. }
  1688. bool EditGuiSkin::Base::undo(GuiSkin &val, C Base &src, C GuiSkin &src_val)
  1689. {
  1690. bool changed=false;
  1691. changed|=Undo(background_color, src.background_color, val.background_color, src_val.background_color);
  1692. changed|=Undo(border_color, src.border_color, val.border_color, src_val.border_color);
  1693. changed|=Undo(mouse_highlight_color, src.mouse_highlight_color, val.mouse_highlight_color, src_val.mouse_highlight_color);
  1694. changed|=Undo(keyboard_highlight_color, src.keyboard_highlight_color, val.keyboard_highlight_color, src_val.keyboard_highlight_color);
  1695. changed|=Undo(font, src.font, font_id, src.font_id);
  1696. changed|=Undo(text_style, src.text_style, text_style_id, src.text_style_id);
  1697. changed|=button.undo(val.button, src.button, src_val.button);
  1698. changed|=checkbox.undo(val.checkbox, src.checkbox, src_val.checkbox);
  1699. changed|=combobox.undo(val.combobox, src.combobox, src_val.combobox);
  1700. changed|=desc.undo(val.desc, src.desc, src_val.desc);
  1701. changed|=imm.undo(val.imm, src.imm, src_val.imm);
  1702. changed|=list.undo(val.list, src.list, src_val.list);
  1703. changed|=menu.undo(val.menu, src.menu, src_val.menu);
  1704. changed|=menubar.undo(val.menubar, src.menubar, src_val.menubar);
  1705. changed|=progress.undo(val.progress, src.progress, src_val.progress);
  1706. changed|=property.undo(val.property, src.property, src_val.property);
  1707. changed|=region.undo(val.region, src.region, src_val.region);
  1708. changed|=slidebar.undo(val.slidebar, src.slidebar, src_val.slidebar);
  1709. changed|=slider.undo(val.slider, src.slider, src_val.slider);
  1710. changed|=tab.undo(val.tab, src.tab, src_val.tab);
  1711. changed|=text.undo(val.text, src.text, src_val.text);
  1712. changed|=textline.undo(val.textline, src.textline, src_val.textline);
  1713. changed|=window.undo(val.window, src.window, src_val.window);
  1714. return changed;
  1715. }
  1716. bool EditGuiSkin::Base::save(File &f)C
  1717. {
  1718. f.cmpUIntV(1);
  1719. f<<background_color<<border_color<<mouse_highlight_color<<keyboard_highlight_color
  1720. <<font_id<<text_style_id
  1721. <<font<<text_style;
  1722. button.save(f);
  1723. checkbox.save(f);
  1724. combobox.save(f);
  1725. desc.save(f);
  1726. imm.save(f);
  1727. list.save(f);
  1728. menu.save(f);
  1729. menubar.save(f);
  1730. progress.save(f);
  1731. property.save(f);
  1732. region.save(f);
  1733. slidebar.save(f);
  1734. slider.save(f);
  1735. tab.save(f);
  1736. text.save(f);
  1737. textline.save(f);
  1738. window.save(f);
  1739. return f.ok();
  1740. }
  1741. bool EditGuiSkin::Base::load(File &f)
  1742. {
  1743. reset(); switch(f.decUIntV())
  1744. {
  1745. case 1:
  1746. {
  1747. f>>background_color>>border_color>>mouse_highlight_color>>keyboard_highlight_color
  1748. >>font_id>>text_style_id
  1749. >>font>>text_style;
  1750. if(button.load(f))
  1751. if(checkbox.load(f))
  1752. if(combobox.load(f))
  1753. if(desc.load(f))
  1754. if(imm.load(f))
  1755. if(list.load(f))
  1756. if(menu.load(f))
  1757. if(menubar.load(f))
  1758. if(progress.load(f))
  1759. if(property.load(f))
  1760. if(region.load(f))
  1761. if(slidebar.load(f))
  1762. if(slider.load(f))
  1763. if(tab.load(f))
  1764. if(text.load(f))
  1765. if(textline.load(f))
  1766. if(window.load(f))
  1767. if(f.ok())return true;
  1768. }break;
  1769. case 0:
  1770. {
  1771. f>>background_color>>border_color>>mouse_highlight_color>>keyboard_highlight_color
  1772. >>font_id>>text_style_id
  1773. >>font>>text_style;
  1774. if(button.load(f))
  1775. if(checkbox.load(f))
  1776. if(combobox.load(f))
  1777. if(desc.load(f))
  1778. if(imm.load(f))
  1779. if(list.load(f))
  1780. if(menu.load(f))
  1781. if(menubar.load(f))
  1782. if(progress.load(f))
  1783. if(region.load(f))
  1784. if(slidebar.load(f))
  1785. if(slider.load(f))
  1786. if(tab.load(f))
  1787. if(text.load(f))
  1788. if(textline.load(f))
  1789. if(window.load(f))
  1790. if(f.ok())return true;
  1791. }break;
  1792. }
  1793. reset(); return false;
  1794. }
  1795. void EditGuiSkin::Base::reset() {T=Base();}
  1796. void EditGuiSkin::reset( ) {T=EditGuiSkin();}
  1797. void EditGuiSkin::newData( ) { base.newData();}
  1798. bool EditGuiSkin::newer(C EditGuiSkin &src)C {return base.newer(src.base);}
  1799. bool EditGuiSkin::equal(C EditGuiSkin &src)C {return base.equal(src.base);}
  1800. bool EditGuiSkin::sync(C EditGuiSkin &src) {bool changed=base.sync(T, src.base, src); return changed;}
  1801. bool EditGuiSkin::undo(C EditGuiSkin &src) {bool changed=base.undo(T, src.base, src); return changed;}
  1802. void EditGuiSkin::copyTo( GuiSkin &skin, C Project &proj)C {skin=T; base.copyTo(skin, proj);}
  1803. bool EditGuiSkin::save(File &f)C
  1804. {
  1805. f.cmpUIntV(0);
  1806. ::EE::GuiSkin::save(f);
  1807. base .save(f);
  1808. return f.ok();
  1809. }
  1810. bool EditGuiSkin::load(File &f)
  1811. {
  1812. reset(); switch(f.decUIntV())
  1813. {
  1814. case 0: if(::EE::GuiSkin::load(f))
  1815. {
  1816. if(base.load(f))
  1817. if(f.ok())return true;
  1818. }break;
  1819. }
  1820. reset(); return false;
  1821. }
  1822. bool EditGuiSkin::load(C Str &name)
  1823. {
  1824. File f; if(f.readTry(name))return load(f);
  1825. reset(); return false;
  1826. }
  1827. EditGuiSkin::Button::Button() : normal_id(UIDZero), pushed_id(UIDZero), disabled_id(UIDZero), pushed_disabled_id(UIDZero), text_style_id(UIDZero) {}
  1828. EditGuiSkin::ButtonImage::ButtonImage() : image_id(UIDZero) {}
  1829. EditGuiSkin::CheckBox::CheckBox() : off_id(UIDZero), on_id(UIDZero), multi_id(UIDZero) {}
  1830. EditGuiSkin::Desc::Desc() : normal_id(UIDZero), text_style_id(UIDZero) {}
  1831. EditGuiSkin::IMM::IMM() : normal_id(UIDZero), text_style_id(UIDZero) {}
  1832. EditGuiSkin::List::List() : cursor_id(UIDZero), highlight_id(UIDZero), selection_id(UIDZero), text_style_id(UIDZero), resize_column_id(UIDZero) {}
  1833. EditGuiSkin::Menu::Menu() : normal_id(UIDZero), check_id(UIDZero), sub_menu_id(UIDZero) {}
  1834. EditGuiSkin::MenuBar::MenuBar() : background_id(UIDZero), highlight_id(UIDZero), text_style_id(UIDZero) {}
  1835. EditGuiSkin::Progress::Progress() : background_id(UIDZero), progress_id(UIDZero), text_style_id(UIDZero) {}
  1836. EditGuiSkin::Region::Region() : normal_id(UIDZero) {}
  1837. EditGuiSkin::SlideBar::SlideBar() : background_id(UIDZero) {}
  1838. EditGuiSkin::Slider::Slider() : background_id(UIDZero), progress_id(UIDZero), slider_id(UIDZero) {}
  1839. EditGuiSkin::Tab::Kind::Kind() : normal_id(UIDZero), pushed_id(UIDZero) {}
  1840. EditGuiSkin::Text::Text() : text_style_id(UIDZero) {}
  1841. EditGuiSkin::TextLine::TextLine() : normal_id(UIDZero), disabled_id(UIDZero), text_style_id(UIDZero), find_image_id(UIDZero) {}
  1842. EditGuiSkin::Window::Window() : normal_id(UIDZero), active_id(UIDZero), normal_no_bar_id(UIDZero), active_no_bar_id(UIDZero), normal_text_style_id(UIDZero), active_text_style_id(UIDZero) {}
  1843. EditGuiSkin::Base::Base() : font_id(UIDZero), text_style_id(UIDZero) {}
  1844. /******************************************************************************/