|
@@ -61,6 +61,7 @@ laWidget _LA_WIDGET_NODE_SOCKET={0};
|
|
laWidget _LA_WIDGET_HEIGHT_ADJUSTER={0};
|
|
laWidget _LA_WIDGET_HEIGHT_ADJUSTER={0};
|
|
laWidget _LA_WIDGET_RAW={0};
|
|
laWidget _LA_WIDGET_RAW={0};
|
|
laWidget _LA_WIDGET_MAPPER={0};
|
|
laWidget _LA_WIDGET_MAPPER={0};
|
|
|
|
+laWidget _LA_WIDGET_IMAGE={0};
|
|
|
|
|
|
laWidget *LA_WIDGET_FIXED_GROUP=&_LA_WIDGET_FIXED_GROUP;
|
|
laWidget *LA_WIDGET_FIXED_GROUP=&_LA_WIDGET_FIXED_GROUP;
|
|
laWidget *LA_WIDGET_TAB=&_LA_WIDGET_TAB;
|
|
laWidget *LA_WIDGET_TAB=&_LA_WIDGET_TAB;
|
|
@@ -102,6 +103,7 @@ laWidget *LA_WIDGET_NODE_SOCKET=&_LA_WIDGET_NODE_SOCKET;
|
|
laWidget *LA_WIDGET_HEIGHT_ADJUSTER=&_LA_WIDGET_HEIGHT_ADJUSTER;
|
|
laWidget *LA_WIDGET_HEIGHT_ADJUSTER=&_LA_WIDGET_HEIGHT_ADJUSTER;
|
|
laWidget *LA_WIDGET_RAW=&_LA_WIDGET_RAW;
|
|
laWidget *LA_WIDGET_RAW=&_LA_WIDGET_RAW;
|
|
laWidget *LA_WIDGET_MAPPER=&_LA_WIDGET_MAPPER;
|
|
laWidget *LA_WIDGET_MAPPER=&_LA_WIDGET_MAPPER;
|
|
|
|
+laWidget *LA_WIDGET_IMAGE=&_LA_WIDGET_IMAGE;
|
|
|
|
|
|
//============================================== [Draw]
|
|
//============================================== [Draw]
|
|
|
|
|
|
@@ -182,6 +184,20 @@ int la_LabelHeight(laUiItem *ui){
|
|
int la_SocketGetHeight(laUiItem *ui){
|
|
int la_SocketGetHeight(laUiItem *ui){
|
|
if(ui->Flags&(LA_UI_SOCKET_LABEL_N|LA_UI_SOCKET_LABEL_S))return 2; return 1;
|
|
if(ui->Flags&(LA_UI_SOCKET_LABEL_N|LA_UI_SOCKET_LABEL_S))return 2; return 1;
|
|
}
|
|
}
|
|
|
|
+int la_ImageGetHeight(laUiItem *ui){
|
|
|
|
+ if(ui->Flags&LA_UI_IMAGE_FULL_W){
|
|
|
|
+ tnsImage* im=ui->Extra;
|
|
|
|
+ int W=im->Texture->Width, H=im->Texture->Height;
|
|
|
|
+ real CW=MAIN.CurrentWindow->CW-LA_RH*4, CH=MAIN.CurrentWindow->CH-LA_RH*4;
|
|
|
|
+ real ra=1;
|
|
|
|
+ if(W>CW){ real r=W/CW; ra=TNS_MAX2(r,ra); }
|
|
|
|
+ if(H>CH){ real r=H/CH; ra=TNS_MAX2(r,ra); }
|
|
|
|
+ W/=ra; H/=ra;
|
|
|
|
+ return H/LA_RH+1;
|
|
|
|
+ }
|
|
|
|
+ if(!ui->SymbolID) ui->SymbolID=3;
|
|
|
|
+ return ui->SymbolID;
|
|
|
|
+}
|
|
|
|
|
|
int la_ColorSelectorGetMinWidth(laUiItem *ui){
|
|
int la_ColorSelectorGetMinWidth(laUiItem *ui){
|
|
return 5*LA_RH;
|
|
return 5*LA_RH;
|
|
@@ -193,12 +209,14 @@ int la_ValueGetMinWidth(laUiItem *ui){
|
|
}
|
|
}
|
|
int la_LabelGetMinWidth(laUiItem *ui){
|
|
int la_LabelGetMinWidth(laUiItem *ui){
|
|
laBoxedTheme *bt = *ui->Type->Theme;
|
|
laBoxedTheme *bt = *ui->Type->Theme;
|
|
|
|
+ if(ui->Flags&LA_UI_MIN_WIDTH){ return LA_RH; }
|
|
int strw=tnsStringGetWidth(transLate(ui->Display->Ptr), 0, ui->Flags&LA_TEXT_MONO);
|
|
int strw=tnsStringGetWidth(transLate(ui->Display->Ptr), 0, ui->Flags&LA_TEXT_MONO);
|
|
if(ui->Type==_LA_UI_MENU_ROOT && strw<LA_RH)strw=LA_RH;
|
|
if(ui->Type==_LA_UI_MENU_ROOT && strw<LA_RH)strw=LA_RH;
|
|
return (strw + bt->LM + bt->RM);
|
|
return (strw + bt->LM + bt->RM);
|
|
}
|
|
}
|
|
int la_StringPropGetMinWidth(laUiItem *ui){
|
|
int la_StringPropGetMinWidth(laUiItem *ui){
|
|
laBoxedTheme *bt = *ui->Type->Theme;
|
|
laBoxedTheme *bt = *ui->Type->Theme;
|
|
|
|
+ if(ui->Flags&LA_UI_MIN_WIDTH){ return LA_RH; }
|
|
char _buf[LA_RAW_CSTR_MAX_LEN]={0}; int ExtraW=0; char* buf=_buf;
|
|
char _buf[LA_RAW_CSTR_MAX_LEN]={0}; int ExtraW=0; char* buf=_buf;
|
|
if(ui->Type == _LA_UI_STRING_MULTI){ExtraW=2*LA_RH+bt->LM;}
|
|
if(ui->Type == _LA_UI_STRING_MULTI){ExtraW=2*LA_RH+bt->LM;}
|
|
laGetString(&ui->PP, _buf, &buf); int rows=0;
|
|
laGetString(&ui->PP, _buf, &buf); int rows=0;
|
|
@@ -303,6 +321,20 @@ int la_SocketGetMinWidth(laUiItem *ui){
|
|
if(ui->Flags&(LA_UI_SOCKET_LABEL_S|LA_UI_SOCKET_LABEL_N))return LA_RH*2;
|
|
if(ui->Flags&(LA_UI_SOCKET_LABEL_S|LA_UI_SOCKET_LABEL_N))return LA_RH*2;
|
|
return LA_RH;
|
|
return LA_RH;
|
|
}
|
|
}
|
|
|
|
+int la_ImageGetMinWidth(laUiItem *ui){
|
|
|
|
+ tnsImage* im=ui->Extra;
|
|
|
|
+ if(!im->Texture) return LA_RH;
|
|
|
|
+ int W=im->Texture->Width, H=im->Texture->Height;
|
|
|
|
+ int UseW=LA_RH;
|
|
|
|
+ if(ui->Flags&LA_UI_IMAGE_FULL_W) UseW=W;
|
|
|
|
+ else UseW=(int)((real)LA_RH*ui->SymbolID/H*W);
|
|
|
|
+ real CW=MAIN.CurrentWindow->CW-LA_RH*4, CH=MAIN.CurrentWindow->CH-LA_RH*4;
|
|
|
|
+ real ra=1;
|
|
|
|
+ if(UseW>CW){ real r=UseW/CW; ra=TNS_MAX2(r,ra); }
|
|
|
|
+ if(H>CH){ real r=H/CH; ra=TNS_MAX2(r,ra); }
|
|
|
|
+ UseW/=ra; H/=ra;
|
|
|
|
+ return UseW;
|
|
|
|
+}
|
|
|
|
|
|
void la_SingleLineStringDrawSelection(laUiItem *ui, int Begin, int U, laBoxedTheme *bt, uint32_t *str, laStringEdit *se);
|
|
void la_SingleLineStringDrawSelection(laUiItem *ui, int Begin, int U, laBoxedTheme *bt, uint32_t *str, laStringEdit *se);
|
|
|
|
|
|
@@ -1347,6 +1379,21 @@ void la_MapperDraw(laUiItem *ui, int h){
|
|
|
|
|
|
if(any){ glLineWidth(2); glPointSize(5); tnsFlush(); glPointSize(1); glLineWidth(1); }
|
|
if(any){ glLineWidth(2); glPointSize(5); tnsFlush(); glPointSize(1); glLineWidth(1); }
|
|
}
|
|
}
|
|
|
|
+void la_ImageDraw(laUiItem *ui, int h){
|
|
|
|
+ laBoxedTheme *bt = (*ui->Type->Theme);
|
|
|
|
+ tnsImage* im=ui->Extra;
|
|
|
|
+ if(!im->Texture) return;
|
|
|
|
+ int W=im->Texture->Width, H=im->Texture->Height;
|
|
|
|
+ int Full=ui->Flags&LA_UI_IMAGE_FULL_W;
|
|
|
|
+ real r=(real)(ui->R-ui->L)/W; if(r<1){W*=r;H*=r;}
|
|
|
|
+ real UseW=Full?(W):((real)LA_RH*ui->SymbolID/H*W);
|
|
|
|
+ real L=0,U=0,UseH=Full?H:(ui->B-ui->U);
|
|
|
|
+ if(Full){ U=(ui->B-ui->U-H)/2; }
|
|
|
|
+ if(ui->Flags&LA_TEXT_ALIGN_LEFT){ L=(ui->R-ui->L-UseW)/2; }
|
|
|
|
+ elif(ui->Flags&LA_TEXT_ALIGN_RIGHT){ L=ui->R-ui->L-UseW; }
|
|
|
|
+ tnsDraw2DTextureDirectly(im->Texture,ui->L+L,ui->U+U,UseW,UseH);
|
|
|
|
+ tnsFlush();
|
|
|
|
+}
|
|
|
|
|
|
void la_ValueMeterDraw(laUiItem *ui, int h){
|
|
void la_ValueMeterDraw(laUiItem *ui, int h){
|
|
laBoxedTheme *bt = (*ui->Type->Theme);
|
|
laBoxedTheme *bt = (*ui->Type->Theme);
|
|
@@ -1497,6 +1544,12 @@ void la_MultiStringInit(laUiItem *ui){
|
|
|
|
|
|
e->HeightCoeff = 10;
|
|
e->HeightCoeff = 10;
|
|
}
|
|
}
|
|
|
|
+void la_ImageUiInit(laUiItem *ui){
|
|
|
|
+ tnsImage* im=ui->Extra; tnsUseImage(im);
|
|
|
|
+}
|
|
|
|
+void la_ImageUiDestroy(laUiItem *ui){
|
|
|
|
+ tnsImage* im=ui->Extra; tnsStopUsingImage(im);
|
|
|
|
+}
|
|
|
|
|
|
void la_RegisterUiTypesBasic(){
|
|
void la_RegisterUiTypesBasic(){
|
|
laKeyMapper* km;
|
|
laKeyMapper* km;
|
|
@@ -1638,6 +1691,10 @@ void la_RegisterUiTypesBasic(){
|
|
LA_WIDGET_MAPPER->Type=
|
|
LA_WIDGET_MAPPER->Type=
|
|
_LA_UI_MAPPER = la_RegisterUiType("LA_mapper_default", 0, "LA_value_mapper", &_LA_THEME_COLLECTION_GROUP, la_MapperDraw, la_ColorPickerGetHeight, la_GeneralUiInit, la_GeneralUiDestroy);
|
|
_LA_UI_MAPPER = la_RegisterUiType("LA_mapper_default", 0, "LA_value_mapper", &_LA_THEME_COLLECTION_GROUP, la_MapperDraw, la_ColorPickerGetHeight, la_GeneralUiInit, la_GeneralUiDestroy);
|
|
|
|
|
|
|
|
+ LA_WIDGET_IMAGE->Type=
|
|
|
|
+ _LA_UI_IMAGE = la_RegisterUiType("LA_image_default", 0, 0, &_LA_THEME_COLLECTION_GROUP, la_ImageDraw, la_ImageGetHeight, la_ImageUiInit, la_ImageUiDestroy);
|
|
|
|
+ _LA_UI_IMAGE->GetMinWidth=la_ImageGetMinWidth;
|
|
|
|
+
|
|
_LA_UI_ROW_BEGIN.Theme=&_LA_THEME_BUTTON;
|
|
_LA_UI_ROW_BEGIN.Theme=&_LA_THEME_BUTTON;
|
|
_LA_UI_ROW_END.Theme=&_LA_THEME_BUTTON;
|
|
_LA_UI_ROW_END.Theme=&_LA_THEME_BUTTON;
|
|
}
|
|
}
|