3DCoat Core API
The 3DCoat API documentation.
Loading...
Searching...
No Matches
include
ClassEngine
class_reg.h
1
265
#define SERIALIZE() _DEFAULT_NEW; virtual void __COUNTOBJ override
266
297
#define SERIALIZE_LATER() _DEFAULT_NEW; virtual void __COUNTOBJ
298
326
#define SERIALIZE_NOW(x) void x::__COUNTOBJ
327
356
#define FUNCTION_CALL( ...) ARG3_CHOOSER(FUNCTION_CALL1, FUNCTION_CALL2, FUNCTION_CALL3, __VA_ARGS__);
357
380
#define LAMBDA_CALL( ...) ARG3_CHOOSER(LAMBDA_CALL1, LAMBDA_CALL2, LAMBDA_CALL3, __VA_ARGS__);
381
401
#define ICON_BUTTON( ... ) ARG4_CHOOSER(ICON_BUTTON2, ICON_BUTTON2, ICON_BUTTON3, ICON_BUTTON4, __VA_ARGS__);
402
420
#define LAMBDA_ICON_BUTTON( ... ) ARG4_CHOOSER(LAMBDA_ICON_BUTTON2, LAMBDA_ICON_BUTTON2, LAMBDA_ICON_BUTTON3, LAMBDA_ICON_BUTTON4, __VA_ARGS__);
421
#define EMPTY_ICON LAMBDA_ICON_BUTTON("empty_square", [] {})
422
445
#define STATE_BUTTON(name, variable, value) REG_TYPE_ANYTHING(variable, __state, name, (void*)cPtrDiff(value))
446
470
#define REG_AUTO(...) REG_AUTO_MACRO_CHOOSER(__VA_ARGS__)
471
491
#define _EACH(bcptr, be) bcptr->ForEach([&](BaseClassElement* __bcelm)->bool { BaseClassElement& be = *__bcelm;
492
498
#define _EACH_END __bcelm->reset(false); return false; } );
499
515
#define _EACH_FAST_END __bcelm->BC = nullptr; __bcelm->Ptr = nullptr; __bcelm->Visible = __bcelm->Serialize = true; return false; }, true );
516
532
#define BCPrintf(...) ((ForEachElem || (result && required_index == 0)) ? comms::cStr::Format(__VA_ARGS__) : comms::cStr::Empty)
533
551
#define DELIMITER NOSAVE REG_AUTO_EX(GDLM(), D)
552
591
#define REG_DROPLIST(fieldID, name, EnumID) { \
592
static Enumerator* E=ENUM.Get(EnumID);\
593
if(!E)E=ENUM.Create(#EnumID);\
594
REG_TYPE_ANYTHING(fieldID,_index,name,E);\
595
}
596
611
#define MAKE_ENUMERATOR(name, content) \
612
{\
613
static bool one=true;\
614
if(one){\
615
Enumerator* E=ENUM.Get(name);\
616
StringsList L;\
617
L.Split(content,"|,;\n\r");\
618
for(int i=0;i<L.Count();i++)E->Add(L[i],i);\
619
}\
620
}
621
622
651
#define UI_LAYOUT(str) NOSAVE REG_AUTO_ANYTHING(GDLM(),str);
652
682
#define UI_ONLY auto_keep_ex(ser,BaseClass::Serialization()); auto_keep_ex(ui,BaseClass::UI_definition()); BaseClass::UI_definition()=true;BaseClass::Serialization()=false;
683
714
#define SAVE_ONLY auto_keep_ex(ser,BaseClass::Serialization()); auto_keep_ex(ui,BaseClass::UI_definition()); BaseClass::UI_definition()=false;BaseClass::Serialization()=true;
715
741
#define SAVE_OR_UI(save, ui) auto_keep_ex(ser,BaseClass::Serialization()); auto_keep_ex(ui,BaseClass::UI_definition()); BaseClass::UI_definition()=ui;BaseClass::Serialization()=save;
766
#define SLIDER(var,name,minvalue,maxvalue) {\
767
static __slider_container tu = GetSliderContainer<decltype(var)>(minvalue, maxvalue);\
768
if(tu.b){\
769
REG_TYPE_GENERAL(var,tu.b,name,tu.p);\
770
}\
771
}
772
798
#define FSLIDER(var,name,minvalue,maxvalue,VisModulator,Inverse) REG_FSLIDEREX2(var,minvalue,maxvalue,minvalue,VisModulator,Inverse,name)
799
818
#define FILEPATH(str, name, mask) REG_TYPE_ANYTHING(str,_cStr,name,(void*)mask);
819
827
#define REG_TEXTURE_2(x,y) {const char* s1=#x"";const char* s2=y"";if(s2[0])s1=s2;REG_MEMBER_EX2(_TextureID,x,s1);}
828
#define REG_TEXTURE_1(x) REG_TEXTURE_2(x, "")
829
#ifdef COMMS_WINDOWS
830
#define REG_TEXTURE_MACRO_CHOOSER(...)\
831
GET_THIRD_ARG((__VA_ARGS__, REG_TEXTURE_2, REG_TEXTURE_1))(__VA_ARGS__)
832
#endif
// Windows
833
#if defined(COMMS_MACOS) || defined(COMMS_LINUX)
834
#define REG_TEXTURE_MACRO_CHOOSER(...)\
835
GET_THIRD_ARG(__VA_ARGS__, REG_TEXTURE_2, REG_TEXTURE_1)(__VA_ARGS__)
836
#endif
// macOS, Linux
837
#define REG_TEXTURE(...) REG_TEXTURE_MACRO_CHOOSER(__VA_ARGS__)
838
840
#define REG_VECTOR2D(vec) {INVISIBLE REG_MEMBER(_float,vec.x);INVISIBLE REG_MEMBER(_float,vec.y);}
842
#define REG_RCT(R) {REG_MEMBER(_float,R.x);REG_MEMBER(_float,R.y);REG_MEMBER(_float,R.w);REG_MEMBER(_float,R.h);}
844
#define REG_VECTOR3D(vec) {INVISIBLE REG_MEMBER(_float,vec.x);INVISIBLE REG_MEMBER(_float,vec.y);INVISIBLE REG_MEMBER(_float,vec.z);}
846
#define REG_VECTOR4D(vec) {INVISIBLE REG_MEMBER(_float,vec.x);INVISIBLE REG_MEMBER(_float,vec.y);INVISIBLE REG_MEMBER(_float,vec.z);INVISIBLE REG_MEMBER(_float,vec.w);}
848
#define REG_MATRIX4D(mat) {for(int i=0;i<4;i++)for(int j=0;j<4;j++){INVISIBLE REG_MEMBER_EX2(_float,mat.Elem(i,j),BCPrintf("%s%d%d",#mat,i,j));}}
850
#define REG_MATRIX3D(mat) {for(int i=0;i<3;i++)for(int j=0;j<3;j++){INVISIBLE REG_MEMBER_EX2(_float,mat.Elem(i,j),BCPrintf("%s%d%d",#mat,i,j));}}
851
868
#define NOHASH if(!hash)
869
871
#define INVISIBLE __FIELD(Visible,false);
873
#define READONLY __FIELD(ReadOnly,true);
875
#define NOSAVE __FIELD(Serialize,false);
877
#define NORESET __FIELD(Noreset,true);
879
#define NONAME __FIELD(Noname,true);
881
#define RENAME(id) __ADDREG(cStr("[NAME ") + cStr(id) + cStr("]"));
883
#define ICON(path) __ADDREG("[ICON "##path##"]");
885
#define CHK_GROUP(g) __ADDREG("[GROUP "#g"]");
887
#define APPLYSCALE __ADDREG("[APPLYSCALE]");
889
#define SKIPHINT __ADDREG("[NOHINT]");
891
#define DEFHOTKEY(combo) __ADDREG("[HOTKEY "##combo"]");
893
#define LEFTALIGN __ADDREG("[LALIGN]");
895
#define SUFFIX(str) __ADDREG("[SUFFIX " str"]");
897
#define _COLOR(cc) __ADDREG("[COLOR "#cc"]");
899
#define _FONTCOLOR(cc) __ADDREG("[FONTCOLOR "#cc"]");
922
#define REG_OPT(x) __ADDREG(x);
923
933
#define REG_COORD(x,y,z) \
934
if(swYZ()){\
935
z;\
936
x;\
937
y;\
938
}else{\
939
x;\
940
y;\
941
z;\
942
}
943
957
#define _MAKE_ONCE static bool ___LINE_NAME(b) = true; if(___ifonce(___LINE_NAME(b)))
958
970
#define DEFINE_SECTION(x) DEFINE_SECTION_SR(x, true, #x)
971
983
#define DEFINE_UI_SECTION(x) DEFINE_SECTION_SR(x, false, #x)
Generated by
1.11.0