@ConvertToAtlasClass.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /******************************************************************************/
  2. /******************************************************************************/
  3. class ConvertToAtlasClass : PropWin
  4. {
  5. class Mtrl
  6. {
  7. Button del;
  8. UID id;
  9. TextLine name;
  10. Text t_original_size, t_scaled_size;
  11. VecI2 original_size, scaled_size, pos;
  12. RectI packed_rect; // not inclusive
  13. bool rotated;
  14. flt scale;
  15. Property prop;
  16. ImagePtr base_0;
  17. EditMaterial edit;
  18. uint tex;
  19. void setScaleText(C VecI2 &size);
  20. void setScale ( );
  21. void setScale (flt scale );
  22. void posY (flt y );
  23. void pack(MtrlImages &atlas);
  24. public:
  25. Mtrl();
  26. };
  27. class Error
  28. {
  29. UID mesh_id, mtrl_id;
  30. flt error;
  31. public:
  32. Error();
  33. };
  34. class Preview : GuiCustom
  35. {
  36. virtual void draw(C GuiPC &gpc)override;
  37. };
  38. class Warning : ClosableWindow
  39. {
  40. Text text;
  41. Region region;
  42. List<Error> list;
  43. Button proceed;
  44. static Str MeshName(C Error&error);
  45. static Str MtrlName(C Error&error);
  46. static void Proceed (ptr);
  47. void create();
  48. void display();
  49. };
  50. enum MODE
  51. {
  52. NEW,
  53. REPLACE_KEEP,
  54. REPLACE_NO_PUBLISH,
  55. REPLACE_REMOVE,
  56. };
  57. static cchar8 *mode_t[]
  58. ;
  59. static const flt h;
  60. Memx<Mtrl> mtrls;
  61. Memc<Error> errors;
  62. Region region;
  63. Preview preview;
  64. Warning warning;
  65. bool force_square, auto_stretch;
  66. flt scale;
  67. MODE mode;
  68. VecI2 tex_size;
  69. Text columns, t_tex_size;
  70. Button convert;
  71. static Str TexSize(C VecI2 &size);
  72. static void Scale(Mtrl &mtrl, C Str &text);
  73. static void Del(Mtrl &mtrl);
  74. static void Refresh(C Property &prop);
  75. static void ChangedScale(C Property &prop);
  76. static int CompareData(C Mtrl &a, C Mtrl &b);
  77. static void Convert(ConvertToAtlasClass &cta);
  78. static void PackMaterial(Mtrl &mtrl, MtrlImages&atlas, int thread_index);
  79. void setErrors(Mesh &mesh, C Memc<UID> &mtrl_ids, C UID &mesh_id);
  80. static bool Create(int &occurence, C UID &id, ptr user);
  81. void convertMeshes(C UID &atlas_id);
  82. static void AddMap(Str &dest, C Str &src, C Mtrl &mtrl, bool normal=false, C Vec &mul=1);
  83. void checkSide(Str &dest, int filled);
  84. void convertPerform();
  85. void convertDo();
  86. void clearProj();
  87. void create();
  88. void autoStretch();
  89. void refresh();
  90. void addElms(C MemPtr<UID> &elm_ids);
  91. void setElms(C MemPtr<UID> &elm_ids);
  92. void drag(Memc<UID> &elms, GuiObj *focus_obj, C Vec2 &screen_pos);
  93. virtual ConvertToAtlasClass& hide()override;
  94. /*virtual void update(C GuiPC &gpc)override
  95. {
  96. super.update(gpc);
  97. if(visible() && gpc.visible)
  98. {
  99. }
  100. }*/
  101. public:
  102. ConvertToAtlasClass();
  103. };
  104. /******************************************************************************/
  105. /******************************************************************************/
  106. extern ConvertToAtlasClass ConvertToAtlas;
  107. /******************************************************************************/