Panel.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /******************************************************************************/
  2. #include "stdafx.h"
  3. /******************************************************************************/
  4. /******************************************************************************/
  5. bool EditPanel::newer(C EditPanel &src)C
  6. {
  7. return center_stretch_time>src.center_stretch_time || side_stretch_time>src.side_stretch_time || center_shadow_time>src.center_shadow_time
  8. || center_color_time>src.center_color_time || border_color_time>src.border_color_time || side_color_time>src.side_color_time || blur_color_time>src.blur_color_time
  9. || shadow_opacity_time>src.shadow_opacity_time || shadow_radius_time>src.shadow_radius_time || shadow_offset_time>src.shadow_offset_time
  10. || border_size_time>src.border_size_time || center_scale_time>src.center_scale_time || top_size_time>src.top_size_time || bottom_size_time>src.bottom_size_time || left_right_size_time>src.left_right_size_time || top_corner_size_time>src.top_corner_size_time || bottom_corner_size_time>src.bottom_corner_size_time
  11. || top_offset_time>src.top_offset_time || bottom_offset_time>src.bottom_offset_time || left_right_offset_time>src.left_right_offset_time || top_corner_offset_time>src.top_corner_offset_time || bottom_corner_offset_time>src.bottom_corner_offset_time
  12. || center_image_time>src.center_image_time || border_image_time>src.border_image_time || top_image_time>src.top_image_time || bottom_image_time>src.bottom_image_time || left_right_image_time>src.left_right_image_time || top_corner_image_time>src.top_corner_image_time || bottom_corner_image_time>src.bottom_corner_image_time
  13. || panel_image_time>src.panel_image_time;
  14. }
  15. bool EditPanel::equal(C EditPanel &src)C
  16. {
  17. return center_stretch_time==src.center_stretch_time && side_stretch_time==src.side_stretch_time && center_shadow_time==src.center_shadow_time
  18. && center_color_time==src.center_color_time && border_color_time==src.border_color_time && side_color_time==src.side_color_time && blur_color_time==src.blur_color_time
  19. && shadow_opacity_time==src.shadow_opacity_time && shadow_radius_time==src.shadow_radius_time && shadow_offset_time==src.shadow_offset_time
  20. && border_size_time==src.border_size_time && center_scale_time==src.center_scale_time && top_size_time==src.top_size_time && bottom_size_time==src.bottom_size_time && left_right_size_time==src.left_right_size_time && top_corner_size_time==src.top_corner_size_time && bottom_corner_size_time==src.bottom_corner_size_time
  21. && top_offset_time==src.top_offset_time && bottom_offset_time==src.bottom_offset_time && left_right_offset_time==src.left_right_offset_time && top_corner_offset_time==src.top_corner_offset_time && bottom_corner_offset_time==src.bottom_corner_offset_time
  22. && center_image_time==src.center_image_time && border_image_time==src.border_image_time && top_image_time==src.top_image_time && bottom_image_time==src.bottom_image_time && left_right_image_time==src.left_right_image_time && top_corner_image_time==src.top_corner_image_time && bottom_corner_image_time==src.bottom_corner_image_time
  23. && panel_image_time==src.panel_image_time;
  24. }
  25. void EditPanel::newData()
  26. {
  27. center_stretch_time++; side_stretch_time++; center_shadow_time++;
  28. center_color_time++; border_color_time++; side_color_time++; blur_color_time++;
  29. shadow_opacity_time++; shadow_radius_time++; shadow_offset_time++;
  30. border_size_time++; center_scale_time++; top_size_time++; bottom_size_time++; left_right_size_time++; top_corner_size_time++; bottom_corner_size_time++;
  31. top_offset_time++; bottom_offset_time++; left_right_offset_time++; top_corner_offset_time++; bottom_corner_offset_time++;
  32. center_image_time++; border_image_time++; top_image_time++; bottom_image_time++; left_right_image_time++; top_corner_image_time++; bottom_corner_image_time++;
  33. panel_image_time++;
  34. }
  35. void EditPanel::includeIDs(MemPtr<UID> ids)C
  36. {
  37. Include(ids, center_image); Include(ids, border_image); Include(ids, top_image); Include(ids, bottom_image);
  38. Include(ids, left_right_image); Include(ids, top_corner_image); Include(ids, bottom_corner_image); Include(ids, panel_image);
  39. }
  40. bool EditPanel::sync(C EditPanel &src)
  41. {
  42. bool changed=false;
  43. changed|=Sync(center_stretch_time, src.center_stretch_time, center_stretch, src.center_stretch);
  44. changed|=Sync( side_stretch_time, src. side_stretch_time, side_stretch, src. side_stretch);
  45. changed|=Sync( center_shadow_time, src. center_shadow_time, center_shadow, src. center_shadow);
  46. changed|=Sync(center_color_time, src.center_color_time, center_color, src.center_color);
  47. changed|=Sync(border_color_time, src.border_color_time, border_color, src.border_color);
  48. changed|=Sync( side_color_time, src. side_color_time, side_color, src. side_color);
  49. changed|=Sync( blur_color_time, src. blur_color_time, blur_color, src. blur_color);
  50. changed|=Sync(shadow_opacity_time, src.shadow_opacity_time, shadow_opacity, src.shadow_opacity);
  51. changed|=Sync( shadow_radius_time, src. shadow_radius_time, shadow_radius , src.shadow_radius );
  52. changed|=Sync( shadow_offset_time, src. shadow_offset_time, shadow_offset , src.shadow_offset );
  53. changed|=Sync( border_size_time, src. border_size_time, border_size, src. border_size);
  54. changed|=Sync( center_scale_time, src. center_scale_time, center_scale, src. center_scale);
  55. changed|=Sync( top_size_time, src. top_size_time, top_size, src. top_size);
  56. changed|=Sync( bottom_size_time, src. bottom_size_time, bottom_size, src. bottom_size);
  57. changed|=Sync( left_right_size_time, src. left_right_size_time, left_right_size, src. left_right_size);
  58. changed|=Sync( top_corner_size_time, src. top_corner_size_time, top_corner_size, src. top_corner_size);
  59. changed|=Sync(bottom_corner_size_time, src.bottom_corner_size_time, bottom_corner_size, src.bottom_corner_size);
  60. changed|=Sync( top_offset_time, src. top_offset_time, top_offset, src. top_offset);
  61. changed|=Sync( bottom_offset_time, src. bottom_offset_time, bottom_offset, src. bottom_offset);
  62. changed|=Sync( left_right_offset_time, src. left_right_offset_time, left_right_offset, src. left_right_offset);
  63. changed|=Sync( top_corner_offset_time, src. top_corner_offset_time, top_corner_offset, src. top_corner_offset);
  64. changed|=Sync(bottom_corner_offset_time, src.bottom_corner_offset_time, bottom_corner_offset, src.bottom_corner_offset);
  65. changed|=Sync( center_image_time, src. center_image_time, center_image, src. center_image);
  66. changed|=Sync( border_image_time, src. border_image_time, border_image, src. border_image);
  67. changed|=Sync( top_image_time, src. top_image_time, top_image, src. top_image);
  68. changed|=Sync( bottom_image_time, src. bottom_image_time, bottom_image, src. bottom_image);
  69. changed|=Sync( left_right_image_time, src. left_right_image_time, left_right_image, src. left_right_image);
  70. changed|=Sync( top_corner_image_time, src. top_corner_image_time, top_corner_image, src. top_corner_image);
  71. changed|=Sync(bottom_corner_image_time, src.bottom_corner_image_time, bottom_corner_image, src.bottom_corner_image);
  72. changed|=Sync(panel_image_time, src.panel_image_time, panel_image, src.panel_image);
  73. return changed;
  74. }
  75. bool EditPanel::undo(C EditPanel &src)
  76. {
  77. bool changed=false;
  78. changed|=Undo(center_stretch_time, src.center_stretch_time, center_stretch, src.center_stretch);
  79. changed|=Undo( side_stretch_time, src. side_stretch_time, side_stretch, src. side_stretch);
  80. changed|=Undo( center_shadow_time, src. center_shadow_time, center_shadow, src. center_shadow);
  81. changed|=Undo(center_color_time, src.center_color_time, center_color, src.center_color);
  82. changed|=Undo(border_color_time, src.border_color_time, border_color, src.border_color);
  83. changed|=Undo( side_color_time, src. side_color_time, side_color, src. side_color);
  84. changed|=Undo( blur_color_time, src. blur_color_time, blur_color, src. blur_color);
  85. changed|=Undo(shadow_opacity_time, src.shadow_opacity_time, shadow_opacity, src.shadow_opacity);
  86. changed|=Undo( shadow_radius_time, src. shadow_radius_time, shadow_radius , src.shadow_radius );
  87. changed|=Undo( shadow_offset_time, src. shadow_offset_time, shadow_offset , src.shadow_offset );
  88. changed|=Undo( border_size_time, src. border_size_time, border_size, src. border_size);
  89. changed|=Undo( center_scale_time, src. center_scale_time, center_scale, src. center_scale);
  90. changed|=Undo( top_size_time, src. top_size_time, top_size, src. top_size);
  91. changed|=Undo( bottom_size_time, src. bottom_size_time, bottom_size, src. bottom_size);
  92. changed|=Undo( left_right_size_time, src. left_right_size_time, left_right_size, src. left_right_size);
  93. changed|=Undo( top_corner_size_time, src. top_corner_size_time, top_corner_size, src. top_corner_size);
  94. changed|=Undo(bottom_corner_size_time, src.bottom_corner_size_time, bottom_corner_size, src.bottom_corner_size);
  95. changed|=Undo( top_offset_time, src. top_offset_time, top_offset, src. top_offset);
  96. changed|=Undo( bottom_offset_time, src. bottom_offset_time, bottom_offset, src. bottom_offset);
  97. changed|=Undo( left_right_offset_time, src. left_right_offset_time, left_right_offset, src. left_right_offset);
  98. changed|=Undo( top_corner_offset_time, src. top_corner_offset_time, top_corner_offset, src. top_corner_offset);
  99. changed|=Undo(bottom_corner_offset_time, src.bottom_corner_offset_time, bottom_corner_offset, src.bottom_corner_offset);
  100. changed|=Undo( center_image_time, src. center_image_time, center_image, src. center_image);
  101. changed|=Undo( border_image_time, src. border_image_time, border_image, src. border_image);
  102. changed|=Undo( top_image_time, src. top_image_time, top_image, src. top_image);
  103. changed|=Undo( bottom_image_time, src. bottom_image_time, bottom_image, src. bottom_image);
  104. changed|=Undo( left_right_image_time, src. left_right_image_time, left_right_image, src. left_right_image);
  105. changed|=Undo( top_corner_image_time, src. top_corner_image_time, top_corner_image, src. top_corner_image);
  106. changed|=Undo(bottom_corner_image_time, src.bottom_corner_image_time, bottom_corner_image, src.bottom_corner_image);
  107. changed|=Undo(panel_image_time, src.panel_image_time, panel_image, src.panel_image);
  108. return changed;
  109. }
  110. void EditPanel::reset() {T=EditPanel();}
  111. void EditPanel::create(C Panel &src, C UID &center_image, C UID &border_image, C UID &top_image, C UID &bottom_image, C UID &left_right_image, C UID &top_corner_image, C UID &bottom_corner_image, C UID &panel_image, C TimeStamp &time)
  112. {
  113. SCAST(Panel, T)=src;
  114. ::EE::Panel::center_image=::EE::Panel::border_image=::EE::Panel::top_image=::EE::Panel::bottom_image=::EE::Panel::left_right_image=::EE::Panel::top_corner_image=::EE::Panel::bottom_corner_image=null; ::EE::Panel::panel_image=null;
  115. T.center_image=center_image; T.border_image=border_image; T.top_image=top_image; T.bottom_image=bottom_image; T.left_right_image=left_right_image; T.top_corner_image=top_corner_image; T.bottom_corner_image=bottom_corner_image; T.panel_image=panel_image;
  116. center_stretch_time=side_stretch_time
  117. =center_color_time=border_color_time=side_color_time=blur_color_time
  118. =shadow_opacity_time=shadow_radius_time=shadow_offset_time
  119. =border_size_time=center_scale_time=top_size_time=bottom_size_time=left_right_size_time=top_corner_size_time=bottom_corner_size_time
  120. =top_offset_time=bottom_offset_time=left_right_offset_time=top_corner_offset_time=bottom_corner_offset_time
  121. =center_image_time=border_image_time=top_image_time=bottom_image_time=left_right_image_time=top_corner_image_time=bottom_corner_image_time
  122. =panel_image_time=time;
  123. }
  124. void EditPanel::copyTo(Panel &panel, C Project &proj)C
  125. {
  126. panel=T;
  127. panel. center_image=proj.gamePath( center_image);
  128. panel. border_image=proj.gamePath( border_image);
  129. panel. top_image=proj.gamePath( top_image);
  130. panel. bottom_image=proj.gamePath( bottom_image);
  131. panel. left_right_image=proj.gamePath( left_right_image);
  132. panel. top_corner_image=proj.gamePath( top_corner_image);
  133. panel.bottom_corner_image=proj.gamePath(bottom_corner_image);
  134. panel. panel_image=proj.gamePath( panel_image);
  135. if(!Equal(panel.shadow_offset, 0))panel.center_shadow=true; // if the user requested shadow offset then 'center_shadow' must be enabled
  136. }
  137. bool EditPanel::save(File &f)C
  138. {
  139. f.cmpUIntV(2);
  140. ::EE::Panel::save(f);
  141. f<<center_image<<border_image<<top_image<<bottom_image<<left_right_image<<top_corner_image<<bottom_corner_image
  142. <<panel_image
  143. <<center_stretch_time<<side_stretch_time<<center_shadow_time
  144. <<center_color_time<<border_color_time<<side_color_time<<blur_color_time
  145. <<shadow_opacity_time<<shadow_radius_time<<shadow_offset_time
  146. <<border_size_time<<center_scale_time<<top_size_time<<bottom_size_time<<left_right_size_time<<top_corner_size_time<<bottom_corner_size_time
  147. <<top_offset_time<<bottom_offset_time<<left_right_offset_time<<top_corner_offset_time<<bottom_corner_offset_time
  148. <<center_image_time<<border_image_time<<top_image_time<<bottom_image_time<<left_right_image_time<<top_corner_image_time<<bottom_corner_image_time
  149. <<panel_image_time;
  150. return f.ok();
  151. }
  152. bool EditPanel::load(File &f)
  153. {
  154. reset(); switch(f.decUIntV())
  155. {
  156. case 2:
  157. {
  158. if(!::EE::Panel::load(f))break;
  159. f>>center_image>>border_image>>top_image>>bottom_image>>left_right_image>>top_corner_image>>bottom_corner_image
  160. >>panel_image
  161. >>center_stretch_time>>side_stretch_time>>center_shadow_time
  162. >>center_color_time>>border_color_time>>side_color_time>>blur_color_time
  163. >>shadow_opacity_time>>shadow_radius_time>>shadow_offset_time
  164. >>border_size_time>>center_scale_time>>top_size_time>>bottom_size_time>>left_right_size_time>>top_corner_size_time>>bottom_corner_size_time
  165. >>top_offset_time>>bottom_offset_time>>left_right_offset_time>>top_corner_offset_time>>bottom_corner_offset_time
  166. >>center_image_time>>border_image_time>>top_image_time>>bottom_image_time>>left_right_image_time>>top_corner_image_time>>bottom_corner_image_time
  167. >>panel_image_time;
  168. if(f.ok())return true;
  169. }break;
  170. case 1:
  171. {
  172. if(!::EE::Panel::load(f))break;
  173. f>>center_image>>border_image>>top_corner_image>>top_image>>bottom_image>>left_right_image
  174. >>center_stretch_time>>shadow_opacity_time>>center_color_time>>border_color_time>>blur_color_time>>shadow_offset_time>>shadow_radius_time>>border_size_time
  175. >>center_scale_time>>top_corner_size_time>>top_size_time>>bottom_size_time>>left_right_size_time
  176. >>top_corner_offset_time>>top_offset_time>>bottom_offset_time>>left_right_offset_time
  177. >>center_image_time>>border_image_time>>top_corner_image_time>>top_image_time>>bottom_image_time>>left_right_image_time;
  178. bottom_corner_image=top_corner_image; bottom_corner_image_time=top_corner_image_time; bottom_corner_size_time=top_corner_size_time; bottom_corner_offset_time=top_corner_offset_time;
  179. if(f.ok())return true;
  180. }break;
  181. case 0:
  182. {
  183. if(!::EE::Panel::load(f))break;
  184. f>>center_image>>border_image>>top_corner_image>>top_image
  185. >>center_stretch_time>>shadow_opacity_time>>center_color_time>>border_color_time>>blur_color_time>>shadow_offset_time>>shadow_radius_time>>border_size_time
  186. >>center_scale_time>>top_corner_size_time>>top_size_time>>top_corner_offset_time>>top_offset_time>>center_image_time>>border_image_time>>top_corner_image_time>>top_image_time;
  187. bottom_corner_image=top_corner_image; bottom_corner_image_time=top_corner_image_time; bottom_corner_size_time=top_corner_size_time; bottom_corner_offset_time=top_corner_offset_time;
  188. if(f.ok())return true;
  189. }break;
  190. }
  191. reset(); return false;
  192. }
  193. bool EditPanel::load(C Str &name)
  194. {
  195. File f; if(f.readTry(name))return load(f);
  196. reset(); return false;
  197. }
  198. EditPanel::EditPanel() : center_image(UIDZero), border_image(UIDZero), top_image(UIDZero), bottom_image(UIDZero), left_right_image(UIDZero), top_corner_image(UIDZero), bottom_corner_image(UIDZero), panel_image(UIDZero) {}
  199. /******************************************************************************/