Gui Image.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. /******************************************************************************/
  2. #include "stdafx.h"
  3. namespace EE{
  4. /******************************************************************************/
  5. void GuiImage::zero()
  6. {
  7. fit=false;
  8. alpha_mode=ALPHA_BLEND;
  9. rect_color.zero();
  10. color =WHITE;
  11. color_add.zero();
  12. }
  13. GuiImage::GuiImage() {zero();}
  14. GuiImage& GuiImage::del()
  15. {
  16. super::del(); zero(); return T;
  17. }
  18. GuiImage& GuiImage::create(C ImagePtr &image)
  19. {
  20. del();
  21. _type =GO_IMAGE;
  22. _visible =true;
  23. _rect.max.x= 0.3f;
  24. _rect.min.y=-0.3f;
  25. T.image =image;
  26. rect_color=Gui.borderColor();
  27. return T;
  28. }
  29. GuiImage& GuiImage::create(C GuiImage &src)
  30. {
  31. if(this!=&src)
  32. {
  33. if(!src.is())del();else
  34. {
  35. copyParams(src);
  36. _type =GO_IMAGE;
  37. fit =src.fit ;
  38. alpha_mode=src.alpha_mode;
  39. rect_color=src.rect_color;
  40. color =src.color ;
  41. color_add =src.color_add ;
  42. image =src.image ;
  43. }
  44. }
  45. return T;
  46. }
  47. /******************************************************************************/
  48. GuiImage& GuiImage::set(C ImagePtr &image) {T.image=image; return T;}
  49. /******************************************************************************/
  50. void GuiImage::draw(C GuiPC &gpc)
  51. {
  52. if(visible() && gpc.visible)
  53. {
  54. Rect rect=T.rect()+gpc.offset;
  55. if(Cuts(rect, gpc.clip))
  56. {
  57. D.alignScreenToPixel(rect);
  58. D.clip(gpc.clip);
  59. if(image)
  60. {
  61. ALPHA_MODE alpha=D.alpha(alpha_mode); if(fit)image->drawFit(color, color_add, rect);else image->draw(color, color_add, rect);
  62. D.alpha(alpha );
  63. }
  64. if(rect_color.a)rect.draw(rect_color, false);
  65. }
  66. }
  67. }
  68. /******************************************************************************/
  69. Bool GuiImage::save(File &f, CChar *path)C
  70. {
  71. if(super::save(f, path))
  72. {
  73. f.putMulti(Byte(5), fit, alpha_mode, rect_color, color, color_add); // version
  74. f.putAsset(image.id());
  75. return f.ok();
  76. }
  77. return false;
  78. }
  79. Bool GuiImage::load(File &f, CChar *path)
  80. {
  81. del(); if(super::load(f, path))switch(f.decUIntV()) // version
  82. {
  83. case 5:
  84. {
  85. _type=GO_IMAGE;
  86. f.getMulti(fit, alpha_mode, rect_color, color, color_add);
  87. image.require(f.getAssetID(), path);
  88. if(f.ok())return true;
  89. }break;
  90. case 4:
  91. {
  92. _type=GO_IMAGE;
  93. f>>alpha_mode>>fit>>rect_color>>color>>color_add;
  94. image.require(f._getStr(), path);
  95. if(f.ok())return true;
  96. }break;
  97. case 3:
  98. {
  99. _type=GO_IMAGE;
  100. f>>alpha_mode>>rect_color>>color>>color_add;
  101. image.require(f._getStr(), path);
  102. if(f.ok())return true;
  103. }break;
  104. case 2:
  105. {
  106. _type=GO_IMAGE;
  107. f>>alpha_mode>>rect_color>>color>>color_add; Swap(rect_color.r, rect_color.b); Swap(color.r, color.b); Swap(color_add.r, color_add.b);
  108. image.require(f._getStr(), path);
  109. if(f.ok())return true;
  110. }break;
  111. case 1:
  112. {
  113. _type=GO_IMAGE;
  114. f>>alpha_mode>>rect_color>>color>>color_add; Swap(rect_color.r, rect_color.b); Swap(color.r, color.b); Swap(color_add.r, color_add.b);
  115. image.require(f._getStr8(), path);
  116. if(f.ok())return true;
  117. }break;
  118. case 0:
  119. {
  120. _type=GO_IMAGE;
  121. f>>alpha_mode>>rect_color; Swap(rect_color.r, rect_color.b); color=WHITE; color_add.zero();
  122. image.require(f._getStr8(), path);
  123. if(f.ok())return true;
  124. }break;
  125. }
  126. del(); return false;
  127. }
  128. /******************************************************************************/
  129. }
  130. /******************************************************************************/