Functions.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. /******************************************************************************/
  2. extern cchar8 *SizeSuffix[];
  3. extern cchar8 *FormatSuffixes[]
  4. ;
  5. extern int FormatSuffixElms;
  6. extern const Color LitSelColor, SelColor, LitColor, DefColor, InvalidColor;
  7. /******************************************************************************/
  8. bool SafeDel(C Str &name, ReadWriteSync &rws);
  9. bool SafeOverwrite(File &src, C Str &dest, ReadWriteSync &rws);
  10. bool SafeOverwriteChunk(File &src, C Str &dest, ReadWriteSync &rws);
  11. bool SafeCopy(C Str &src, C Str &dest);
  12. void RemoveChunk(C Str &file, C Str &chunk, ReadWriteSync &rws);
  13. Str FileSize(long size, char dot=',');
  14. Str FileSizeKB(long size);
  15. void SavedImage (C Str &name);
  16. void SavedImageAtlas (C Str &name);
  17. void SavedEditSkel (C Str &name);
  18. void SavedSkel (C Str &name);
  19. void SavedAnim (C Str &name);
  20. void SavedMesh (C Str &name);
  21. void SavedEditMtrl (C Str &name);
  22. void SavedEditWaterMtrl(C Str &name);
  23. void SavedEditPhysMtrl (C Str &name);
  24. void SavedMtrl (C Str &name);
  25. void SavedWaterMtrl (C Str &name);
  26. void SavedPhysMtrl (C Str &name);
  27. void SavedEditPhys (C Str &name);
  28. void SavedPhys (C Str &name);
  29. void SavedEnum (C Str &name);
  30. void SavedEditEnum (C Str &name);
  31. void SavedEditObjPar (C Str &name);
  32. void SavedGameObjPar (C Str &name);
  33. void SavedGameWayp (C Str &name);
  34. void SavedFont (C Str &name);
  35. void SavedTextStyle (C Str &name);
  36. void SavedPanelImage (C Str &name);
  37. void SavedPanel (C Str &name);
  38. void SavedGuiSkin (C Str &name);
  39. void SavedGui (C Str &name);
  40. void SavedEnv (C Str &name);
  41. void Saved(C Image &img , C Str &name);
  42. void Saved(C ImageAtlas &img , C Str &name);
  43. void Saved(C IconSettings &icon, C Str &name);
  44. void Saved(C EditSkeleton &skel, C Str &name);
  45. void Saved(C Skeleton &skel, C Str &name);
  46. void Saved(C Animation &anim, C Str &name);
  47. void Saved(C Mesh &mesh, C Str &name);
  48. void Saved(C EditMaterial &mtrl, C Str &name);
  49. void Saved(C EditWaterMtrl &mtrl, C Str &name);
  50. void Saved(C EditPhysMtrl &mtrl, C Str &name);
  51. void Saved(C Material &mtrl, C Str &name);
  52. void Saved(C WaterMtrl &mtrl, C Str &name);
  53. void Saved(C PhysMtrl &mtrl, C Str &name);
  54. void Saved(C PhysBody &phys, C Str &name);
  55. void Saved(C Enum &enm , C Str &name);
  56. void Saved(C EditEnums &enms, C Str &name);
  57. void Saved(C EditObject &obj , C Str &name);
  58. void Saved(C Object &obj , C Str &name);
  59. void Saved(C EditWaypoint &wp , C Str &name);
  60. void Saved(C Game::Waypoint &wp , C Str &name);
  61. void Saved(C EditFont &font, C Str &name);
  62. void Saved(C Font &font, C Str &name);
  63. void Saved(C EditTextStyle &ts , C Str &name);
  64. void Saved(C EditPanelImage &pi , C Str &name);
  65. void Saved(C PanelImage &pi , C Str &name);
  66. void Saved(C TextStyle &ts , C Str &name);
  67. void Saved(C EditPanel &panl, C Str &name);
  68. void Saved(C Panel &panl, C Str &name);
  69. void Saved(C EditGuiSkin &skin, C Str &name);
  70. void Saved(C GuiSkin &skin, C Str &name);
  71. void Saved(C GuiObjs &gui , C Str &name);
  72. void Saved(C Lake &lake, C Str &name);
  73. void Saved(C River &rivr, C Str &name);
  74. void Saved(C EditEnv &env , C Str &name);
  75. void Saved(C Environment &env , C Str &name);
  76. void Saved(C Game::WorldSettings &s, C Str &name);
  77. bool Save (C Image &img , C Str &name );
  78. void Save (C ImageAtlas &img , C Str &name );
  79. void Save (C IconSettings &icon, C Str &name );
  80. void Save (C EditSkeleton &skel, C Str &name );
  81. void Save (C Skeleton &skel, C Str &name );
  82. void Save (C Animation &anim, C Str &name );
  83. void Save (C Mesh &mesh, C Str &name, C Str &resource_path=S);
  84. void Save (C EditMaterial &mtrl, C Str &name );
  85. void Save (C EditWaterMtrl &mtrl, C Str &name );
  86. void Save (C EditPhysMtrl &mtrl, C Str &name );
  87. void Save (C Material &mtrl, C Str &name, C Str &resource_path=S);
  88. void Save (C WaterMtrl &mtrl, C Str &name, C Str &resource_path=S);
  89. void Save (C PhysMtrl &mtrl, C Str &name );
  90. void Save (C PhysBody &phys, C Str &name, C Str &resource_path=S);
  91. void Save (C Enum &enm , C Str &name );
  92. void Save (C EditEnums &enms, C Str &name );
  93. void Save (C EditObject &obj , C Str &name, C Str &resource_path=S);
  94. void Save (C Object &obj , C Str &name, C Str &resource_path=S);
  95. void Save (C EditWaypoint &wp , C Str &name );
  96. void Save (C Game::Waypoint &wp , C Str &name );
  97. void Save (C EditFont &font, C Str &name );
  98. void Save (C Font &font, C Str &name );
  99. void Save (C EditTextStyle &ts , C Str &name );
  100. void Save (C TextStyle &ts , C Str &name, C Str &resource_path=S);
  101. void Save (C EditPanelImage &pi , C Str &name );
  102. void Save (C PanelImage &pi , C Str &name );
  103. void Save (C EditPanel &panl, C Str &name );
  104. void Save (C Panel &panl, C Str &name, C Str &resource_path=S);
  105. void Save (C EditGuiSkin &skin, C Str &name );
  106. void Save (C GuiSkin &skin, C Str &name, C Str &resource_path=S);
  107. void Save (C GuiObjs &gui , C Str &name, C Str &resource_path=S);
  108. void Save (C Lake &lake, C Str &name );
  109. void Save (C River &rivr, C Str &name );
  110. void Save (C EditEnv &env , C Str &name );
  111. void Save (C Environment &env , C Str &name, C Str &resource_path=S);
  112. void Save (C Game::WorldSettings &s, C Str &name, C Str &resource_path=S);
  113. bool Load (Mesh &mesh, C Str &name, C Str &resource_path=S);
  114. bool Load (Material &mtrl, C Str &name, C Str &resource_path=S);
  115. bool Load (WaterMtrl &mtrl, C Str &name, C Str &resource_path=S);
  116. bool Load (EditObject &obj , C Str &name, C Str &resource_path=S);
  117. bool SaveCode(C Str &code, C Str &name);
  118. Edit::ERROR_TYPE LoadCode(Str &code, C Str &name);
  119. void SavedBase(ELM_TYPE type, C Str &path);
  120. void SavedCode(C Str &path);
  121. void SavedEdit(ELM_TYPE type, C Str &path);
  122. void SavedGame(ELM_TYPE type, C Str &path);
  123. void MAX1(TimeStamp &time, C TimeStamp &src_time);
  124. bool Sync(TimeStamp &time, C TimeStamp &src_time);
  125. bool Undo(TimeStamp &time, C TimeStamp &src_time);
  126. template<typename TYPE> bool Sync(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  127. template<typename TYPE> bool UndoByTime(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  128. template<typename TYPE> bool SyncByValue(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  129. template<typename TYPE> bool SyncByValueEqual(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  130. template<typename TYPE> bool UndoByValue(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  131. template<typename TYPE> bool Undo(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data);
  132. void SetUndo(C Edit::_Undo &undos, Button &undo, Button &redo);
  133. DIR_ENUM GetCubeDir(int face);
  134. Str GetCubeFile(C Str &files, int face);
  135. Str SetCubeFile(Str files, int face, C Str &file);
  136. bool HasAlpha(C Image &image);
  137. bool HasColor(C Image &image);
  138. bool NeedFixAlpha(Image &image, IMAGE_TYPE type, bool always=false);
  139. bool FixAlpha(Image &image, IMAGE_TYPE type, bool always=false);
  140. void ImageProps(C Image &image, UID *md5, IMAGE_TYPE *compress_type=null, uint flags=0);
  141. void LoadTexture(C Project &proj, C UID &tex_id, Image &image, C VecI2 &size=-1);
  142. void ExtractBaseTextures(C Project &proj, C UID &base_0, C UID &base_1, Image *col, Image *alpha, Image *bump, Image *normal, Image *specular, Image *glow, C VecI2 &size=-1);
  143. void ExtractDetailTexture(C Project &proj, C UID &detail_tex, Image *col, Image *bump, Image *normal);
  144. UID MergedBaseTexturesID(C UID &base_0, C UID &base_1);
  145. VecI ImageSize(C VecI &src, C VecI2 &custom, bool pow2);
  146. bool EditToGameImage(Image &edit, Image &game, bool pow2, bool alpha_lum, ElmImage::TYPE type, int mode, int mip_maps, bool has_color, bool has_alpha, bool ignore_alpha, C VecI2 &custom_size=0, C int *force_type=null);
  147. bool EditToGameImage(Image &edit, Image &game, C ElmImage &data, C int *force_type=null);
  148. void DrawPanelImage(C PanelImage &pi, C Rect &rect, bool draw_lines=false);
  149. bool UpdateMtrlTex(C Image &src, Image &dest);
  150. void AdjustMaterialParams(EditMaterial &edit, Material &game, uint old_base_tex, uint new_base_tex);
  151. bool ImportImage(Image &image, C Str &name, int type=-1, int mode=-1, int mip_maps=-1, bool decompress=false);
  152. bool ValidChar(char c);
  153. bool ValidText(C Str &text, int min=1, int max=-1);
  154. bool ValidFileName(C Str &name);
  155. bool ValidFileNameForUpload(C Str &name, int max=128);
  156. bool ValidPass(C Str &pass);
  157. bool ValidEnum(C Str &name);
  158. bool ValidSupport(C Str &support);
  159. bool ValidVideo(C Str &video);
  160. Str YouTubeEmbedToFull(C Str &video);
  161. Str YouTubeFullToEmbed(C Str &video);
  162. UID PassToMD5(C Str &pass);
  163. Str NameToEnum(C Str &name);
  164. Str TimeAgo(C DateTime &date);
  165. char CountS(int n);
  166. Str Plural(Str name);
  167. Str RemoveQuotes(Str s);
  168. Str VecI2AsText(C VecI2 &v);
  169. Vec2 TextVec2Ex(cchar *t);
  170. Vec TextVecEx(cchar *t);
  171. Str TextVecEx(C Vec &v, int precision=-3);
  172. Str RelativePath (C Str &path);
  173. Str EditToGamePath( Str path);
  174. cchar8* FormatSuffixSimple();
  175. cchar8* FormatSuffix(IMAGE_TYPE type);
  176. Str8 ImageDownSizeSuffix(int size);
  177. bool MonoTransform(C TextParam &p );
  178. bool ResizeTransform(C Str &name);
  179. bool UVTransform(C Str &name);
  180. bool NonMonoTransform(C Str &name);
  181. bool HighPrecTransform(C Str &name);
  182. TextParam* FindTransform(MemPtr<Edit::FileParams> files, C Str &name);
  183. void DelTransform(MemPtr<Edit::FileParams> files, C Str &name);
  184. void SetTransform(MemPtr<Edit::FileParams> files, C Str &name, C Str &value=S);
  185. bool ForcesMono(C Str &file);
  186. void SetTransform(Str &file, C Str &name, C Str &value=S);
  187. Str BumpFromColTransform(C Str &color_map, int blur);
  188. SOUND_CODEC TextSoundCodec(C Str &t);
  189. int VisibleVtxs (C MeshLod &mesh);
  190. int VisibleTris (C MeshLod &mesh);
  191. int VisibleTrisTotal (C MeshLod &mesh);
  192. int VisibleQuads (C MeshLod &mesh);
  193. int VisibleSize (C MeshLod &mesh);
  194. flt VisibleLodQuality(C Mesh &mesh, int lod_index);
  195. void KeepParams(C Mesh &src, Mesh &dest);
  196. void EditToGameMesh(C Mesh &edit, Mesh &game, Skeleton *skel, Enum *draw_group, C Matrix *matrix);
  197. bool HasMaterial(C MeshPart &part, C MaterialPtr &material);
  198. bool FixVtxNrm(MeshBase &base);
  199. void FixMesh(Mesh &mesh);
  200. bool SamePartInAllLods(C Mesh &mesh, int part);
  201. void SetDrawGroup(Mesh &mesh, MeshLod &lod, int part, int group, Enum *draw_group_enum);
  202. Str BoneNeutralName(C Str &name);
  203. bool OverrideMeshSkel(C Mesh *mesh, C Skeleton *skel);
  204. bool OverridePhys (C PhysBody *body );
  205. int CompareObj(C Game::Area::Data::AreaObj &a, C Game::Area::Data::AreaObj &b);
  206. void SetRootMoveRot(Animation &anim, C Vec *root_move, C Vec *root_rot);
  207. inline bool NegativeSB(flt x);
  208. inline void CHSSB(flt &x);
  209. int UniquePairs(int elms);
  210. bool Distance2D(C Vec2 &point, C Edge &edge, flt &dist, flt min_length=0.025f);
  211. int MatrixAxis(C Vec2 &screen_pos, C Matrix &matrix);
  212. void MatrixAxis(Edit::Viewport4 &v4, C Matrix &matrix, int &axis, Vec *axis_vec=null);
  213. int GetNearestAxis(C Matrix &matrix, C Vec &dir);
  214. bool UniformScale(C Matrix3 &m);
  215. bool UniformScale(C Vec &s);
  216. flt CamMoveScale(bool perspective=true );
  217. Vec2 MoveScale(Edit::Viewport4::View &view);
  218. flt AlignDirToCamEx(C Vec &dir, C Vec2 &delta, C Vec &cam_x=ActiveCam.matrix.x, C Vec &cam_y=ActiveCam.matrix.y);
  219. Vec AlignDirToCam (C Vec &dir, C Vec2 &delta, C Vec &cam_x=ActiveCam.matrix.x, C Vec &cam_y=ActiveCam.matrix.y);
  220. flt MatrixLength(C Vec &x, C Vec &y, C Vec &z, C Vec &dir);
  221. void Include(RectI &rect, C VecI2 &x);
  222. void Include(RectI &rect, C RectI &x);
  223. void Include(Rect &rect, C Rect &x);
  224. void Include(Rect &rect, bool &is, C Vec2 &x);
  225. void Include(Rect &rect, bool &is, C Rect &x);
  226. void Include(Box &box , bool &is, C Vec &v);
  227. void Include(Box &box , bool &is, C Box &b);
  228. void DrawMatrix(C Matrix &matrix, int axis);
  229. void Hide(GuiObj &go);
  230. Rect GetRect(C Rect &rect, Memt<Rect> &rects);
  231. void Include(MemPtr<UID> ids, C UID &id);
  232. bool Same(C Memc<UID> &a, C Memc<UID> &b);
  233. bool Same(C Memc<ObjData> &a, C Memc<ObjData> &b);
  234. void GetNewer(C Memc<ObjData> &a, C Memc<ObjData> &b, Memc<UID> &newer);
  235. bool EmbedObject(C Box &obj_box, C VecI2 &area_xy, flt area_size);
  236. bool SameOS(OS_VER a, OS_VER b);
  237. UID GetFileNameID(Str name);
  238. UID AsID(C Elm *elm);
  239. void SetPath(WindowIO &win_io, C Str &path, bool clear=false);
  240. bool ParamTypeID (PARAM_TYPE type );
  241. bool ParamTypeCompatible(PARAM_TYPE a, PARAM_TYPE b);
  242. bool ParamCompatible (C Param &a, C Param &b);
  243. UNIT_TYPE UnitType(C Str &s);
  244. UNIT_TYPE GetUnitType(C Str &s);
  245. flt ConvertUnitType(flt value, flt full, UNIT_TYPE unit);
  246. Color BackgroundColor();
  247. Color BackgroundColorLight();
  248. Color GuiListTextColor();
  249. Color GetLitSelCol(bool lit, bool sel, C Color &none=DefColor);
  250. bool ErrorCopy(C Str &src, C Str &dest);
  251. bool ErrorRecycle(C Str &name);
  252. bool ErrorCreateDir(C Str &name);
  253. bool RecycleLoud (C Str &name );
  254. bool CreateDirLoud(C Str &name );
  255. bool SafeCopyLoud (C Str &src, C Str &dest);
  256. flt VorbisBitRateToQuality(int rel_bit_rate);
  257. int DecIntV(File &f);
  258. void GetStr2(File &f, Str &s);
  259. Str GetStr2(File &f);
  260. void PutStr(File &f, C Str &s);
  261. Str GetStr(File &f);
  262. void GetStr(File &f, Str &s);
  263. template<typename TYPE > bool Save(File &f, C Memc<TYPE> &m );
  264. template<typename TYPE, typename USER> bool Save(File &f, C Memc<TYPE> &m, C USER &user);
  265. template<typename TYPE > bool Save(File &f, C Memx<TYPE> &m );
  266. template<typename TYPE > bool Load(File &f, Memc<TYPE> &m );
  267. template<typename TYPE, typename USER> bool Load(File &f, Memc<TYPE> &m, C USER &user);
  268. template<typename TYPE > bool Load(File &f, Memx<TYPE> &m );
  269. Mems<Edit::FileParams> _DecodeFileParams(C Str &str);
  270. /******************************************************************************/