Icon.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /******************************************************************************/
  2. #include "stdafx.h"
  3. /******************************************************************************/
  4. /******************************************************************************/
  5. bool IconSettings::newer(C IconSettings &src)C
  6. {
  7. return mip_maps_time>src.mip_maps_time || auto_center_time>src.auto_center_time || light0_shadow_time>src.light0_shadow_time || light1_shadow_time>src.light1_shadow_time || type_time>src.type_time
  8. || width_time>src.width_time || height_time>src.height_time || scale_time>src.scale_time || fov_time>src.fov_time
  9. || cam_angle_time>src.cam_angle_time || cam_focus_time>src.cam_focus_time
  10. || ambient_col_time>src.ambient_col_time || ambient_occl_time>src.ambient_occl_time || ambient_range_time>src.ambient_range_time
  11. || bloom_original_time>src.bloom_original_time || bloom_scale_time>src.bloom_scale_time || bloom_cut_time>src.bloom_cut_time
  12. || light0_col_time>src.light0_col_time || light1_col_time>src.light1_col_time || light0_angle_time>src.light0_angle_time || light1_angle_time>src.light1_angle_time;
  13. }
  14. bool IconSettings::equal(C IconSettings &src)C
  15. {
  16. return mip_maps_time==src.mip_maps_time && auto_center_time==src.auto_center_time && light0_shadow_time==src.light0_shadow_time && light1_shadow_time==src.light1_shadow_time && type_time==src.type_time
  17. && width_time==src.width_time && height_time==src.height_time && scale_time==src.scale_time && fov_time==src.fov_time
  18. && cam_angle_time==src.cam_angle_time && cam_focus_time==src.cam_focus_time
  19. && ambient_col_time==src.ambient_col_time && ambient_occl_time==src.ambient_occl_time && ambient_range_time==src.ambient_range_time
  20. && bloom_original_time==src.bloom_original_time && bloom_scale_time==src.bloom_scale_time && bloom_cut_time==src.bloom_cut_time
  21. && light0_col_time==src.light0_col_time && light1_col_time==src.light1_col_time && light0_angle_time==src.light0_angle_time && light1_angle_time==src.light1_angle_time;
  22. }
  23. void IconSettings::reset() {T=IconSettings();}
  24. bool IconSettings::sync(C IconSettings &src)
  25. {
  26. bool changed=false;
  27. changed|=Sync( mip_maps_time, src. mip_maps_time, mip_maps , src.mip_maps);
  28. changed|=Sync( auto_center_time, src. auto_center_time, auto_center , src.auto_center);
  29. changed|=Sync( light0_shadow_time, src. light0_shadow_time, light0_shadow , src.light0_shadow);
  30. changed|=Sync( light1_shadow_time, src. light1_shadow_time, light1_shadow , src.light1_shadow);
  31. changed|=Sync( type_time, src. type_time, type , src.type);
  32. changed|=Sync( width_time, src. width_time, width , src.width);
  33. changed|=Sync( height_time, src. height_time, height , src.height);
  34. changed|=Sync( scale_time, src. scale_time, scale , src.scale);
  35. changed|=Sync( fov_time, src. fov_time, fov , src.fov);
  36. changed|=Sync( cam_angle_time, src. cam_angle_time, cam_angle , src.cam_angle);
  37. changed|=Sync( cam_focus_time, src. cam_focus_time, cam_focus , src.cam_focus);
  38. changed|=Sync( ambient_col_time, src. ambient_col_time, ambient_col , src.ambient_col);
  39. changed|=Sync( ambient_occl_time, src. ambient_occl_time, ambient_occl , src.ambient_occl);
  40. changed|=Sync( ambient_range_time, src. ambient_range_time, ambient_range , src.ambient_range);
  41. changed|=Sync(bloom_original_time, src.bloom_original_time, bloom_original, src.bloom_original);
  42. changed|=Sync( bloom_scale_time, src. bloom_scale_time, bloom_scale , src.bloom_scale);
  43. changed|=Sync( bloom_cut_time, src. bloom_cut_time, bloom_cut , src.bloom_cut);
  44. changed|=Sync( light0_col_time, src. light0_col_time, light0_col , src.light0_col);
  45. changed|=Sync( light1_col_time, src. light1_col_time, light1_col , src.light1_col);
  46. changed|=Sync( light0_angle_time, src. light0_angle_time, light0_angle , src.light0_angle);
  47. changed|=Sync( light1_angle_time, src. light1_angle_time, light1_angle , src.light1_angle);
  48. return changed;
  49. }
  50. bool IconSettings::undo(C IconSettings &src)
  51. {
  52. bool changed=false;
  53. changed|=Undo( mip_maps_time, src. mip_maps_time, mip_maps , src.mip_maps);
  54. changed|=Undo( auto_center_time, src. auto_center_time, auto_center , src.auto_center);
  55. changed|=Undo( light0_shadow_time, src. light0_shadow_time, light0_shadow , src.light0_shadow);
  56. changed|=Undo( light1_shadow_time, src. light1_shadow_time, light1_shadow , src.light1_shadow);
  57. changed|=Undo( type_time, src. type_time, type , src.type);
  58. changed|=Undo( width_time, src. width_time, width , src.width);
  59. changed|=Undo( height_time, src. height_time, height , src.height);
  60. changed|=Undo( scale_time, src. scale_time, scale , src.scale);
  61. changed|=Undo( fov_time, src. fov_time, fov , src.fov);
  62. changed|=Undo( cam_angle_time, src. cam_angle_time, cam_angle , src.cam_angle);
  63. changed|=Undo( cam_focus_time, src. cam_focus_time, cam_focus , src.cam_focus);
  64. changed|=Undo( ambient_col_time, src. ambient_col_time, ambient_col , src.ambient_col);
  65. changed|=Undo( ambient_occl_time, src. ambient_occl_time, ambient_occl , src.ambient_occl);
  66. changed|=Undo( ambient_range_time, src. ambient_range_time, ambient_range , src.ambient_range);
  67. changed|=Undo(bloom_original_time, src.bloom_original_time, bloom_original, src.bloom_original);
  68. changed|=Undo( bloom_scale_time, src. bloom_scale_time, bloom_scale , src.bloom_scale);
  69. changed|=Undo( bloom_cut_time, src. bloom_cut_time, bloom_cut , src.bloom_cut);
  70. changed|=Undo( light0_col_time, src. light0_col_time, light0_col , src.light0_col);
  71. changed|=Undo( light1_col_time, src. light1_col_time, light1_col , src.light1_col);
  72. changed|=Undo( light0_angle_time, src. light0_angle_time, light0_angle , src.light0_angle);
  73. changed|=Undo( light1_angle_time, src. light1_angle_time, light1_angle , src.light1_angle);
  74. return changed;
  75. }
  76. bool IconSettings::save(File &f)C
  77. {
  78. f.cmpUIntV(3);
  79. f<<mip_maps<<auto_center<<light0_shadow<<light1_shadow<<type<<width<<height<<scale<<fov<<ambient_occl<<ambient_range<<cam_angle<<cam_focus<<ambient_col
  80. <<bloom_original<<bloom_scale<<bloom_cut
  81. <<light0_col<<light1_col<<light0_angle<<light1_angle
  82. <<mip_maps_time<<auto_center_time<<light0_shadow_time<<light1_shadow_time<<type_time<<width_time<<height_time<<scale_time<<fov_time
  83. <<cam_angle_time<<cam_focus_time<<ambient_col_time<<ambient_occl_time<<ambient_range_time
  84. <<bloom_original_time<<bloom_scale_time<<bloom_cut_time
  85. <<light0_col_time<<light1_col_time<<light0_angle_time<<light1_angle_time;
  86. return f.ok();
  87. }
  88. bool IconSettings::load(File &f)
  89. {
  90. flt bloom_contrast; TimeStamp bloom_contrast_time;
  91. switch(f.decUIntV())
  92. {
  93. case 3:
  94. {
  95. f>>mip_maps>>auto_center>>light0_shadow>>light1_shadow>>type>>width>>height>>scale>>fov>>ambient_occl>>ambient_range>>cam_angle>>cam_focus>>ambient_col
  96. >>bloom_original>>bloom_scale>>bloom_cut
  97. >>light0_col>>light1_col>>light0_angle>>light1_angle
  98. >>mip_maps_time>>auto_center_time>>light0_shadow_time>>light1_shadow_time>>type_time>>width_time>>height_time>>scale_time>>fov_time
  99. >>cam_angle_time>>cam_focus_time>>ambient_col_time>>ambient_occl_time>>ambient_range_time
  100. >>bloom_original_time>>bloom_scale_time>>bloom_cut_time
  101. >>light0_col_time>>light1_col_time>>light0_angle_time>>light1_angle_time;
  102. if(f.ok())return true;
  103. }break;
  104. case 2:
  105. {
  106. f>>mip_maps>>auto_center>>light0_shadow>>light1_shadow>>type>>width>>height>>scale>>fov>>ambient_occl>>ambient_range>>cam_angle>>cam_focus>>ambient_col
  107. >>bloom_original>>bloom_scale>>bloom_cut>>bloom_contrast
  108. >>light0_col>>light1_col>>light0_angle>>light1_angle
  109. >>mip_maps_time>>auto_center_time>>light0_shadow_time>>light1_shadow_time>>type_time>>width_time>>height_time>>scale_time>>fov_time
  110. >>cam_angle_time>>cam_focus_time>>ambient_col_time>>ambient_occl_time>>ambient_range_time
  111. >>bloom_original_time>>bloom_scale_time>>bloom_cut_time>>bloom_contrast_time
  112. >>light0_col_time>>light1_col_time>>light0_angle_time>>light1_angle_time;
  113. if(type>=1)type=ElmImage::TYPE(type+1); if(f.ok())return true;
  114. }break;
  115. case 1:
  116. {
  117. f>>mip_maps>>auto_center>>light0_shadow>>type>>width>>height>>scale>>fov>>ambient_occl>>ambient_range>>cam_angle>>cam_focus>>ambient_col
  118. >>bloom_original>>bloom_scale>>bloom_cut>>bloom_contrast
  119. >>light0_col>>light1_col>>light0_angle>>light1_angle
  120. >>mip_maps_time>>auto_center_time>>light0_shadow_time>>type_time>>width_time>>height_time>>scale_time>>fov_time
  121. >>cam_angle_time>>cam_focus_time>>ambient_col_time>>ambient_occl_time>>ambient_range_time
  122. >>bloom_original_time>>bloom_scale_time>>bloom_cut_time>>bloom_contrast_time
  123. >>light0_col_time>>light1_col_time>>light0_angle_time>>light1_angle_time;
  124. light1_shadow=light0_shadow; light1_shadow_time=light0_shadow_time;
  125. if(type>=1)type=ElmImage::TYPE(type+1); if(f.ok())return true;
  126. }break;
  127. case 0: reset(); return f.ok(); // 0 -> as default values
  128. }
  129. reset(); return false;
  130. }
  131. bool IconSettings::load(C Str &name)
  132. {
  133. File f; if(f.readTry(name))return load(f);
  134. reset(); return false;
  135. }
  136. IconSettings::IconSettings() : mip_maps(false), auto_center(true), light0_shadow(true), light1_shadow(true), type(ElmImage::COMPRESSED), width(128), height(128), scale(1), fov(PI_6), ambient_occl(1.2f), ambient_range(0.1f), bloom_original(1.0f), bloom_scale(0.5f), bloom_cut(0.3f), cam_angle(0), cam_focus(0), ambient_col(0.4f), light0_col(0.7f), light1_col(0.0f), light0_angle( PI_4, PI_4), light1_angle(-PI_4, -PI_4) {}
  137. /******************************************************************************/