*/}}
Browse Source

Better looking color picker

YimingWu 3 weeks ago
parent
commit
3f945c7a5e
1 changed files with 13 additions and 7 deletions
  1. 13 7
      resources/la_widgets.c

+ 13 - 7
resources/la_widgets.c

@@ -1209,7 +1209,6 @@ void la_UiSeperatorDraw(laUiItem *ui, int h){
 void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
     real c = (real)((ui->R + ui->L) / 2) - h / 2; /*- bt->RM*/
-    ;
     real r = (ui->B - ui->U - bt->TP - bt->BP) / 2;
     int i = 0;
     real colors[584]={0}; //4*72*2+4*2
@@ -1221,6 +1220,7 @@ void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     real pi_4;
     GLuint index[26];
     real v, cv, sv;
+    real lw = (float)(ui->B-ui->U)/LA_RH/5; if(lw<1.0f) lw=1.0f;
 
     laGetFloatArray(&ui->PP, RealColor);
 
@@ -1297,25 +1297,31 @@ void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     cv = cos(v / 2 * TNS_PI);
     sv = sin(v / 2 * TNS_PI);
 
-    verts[0] = cv * r + c;
-    verts[1] = sv * r + ui->U + r;
-    verts[2] = cv * (r + h) + c;
-    verts[3] = sv * (r + h) + ui->U + r;
+    tnsLineWidth(lw);
+    verts[0] = cv * r + c; verts[1] = sv * r + ui->U + r;
+    verts[2] = cv * (r + h) + c; verts[3] = sv * (r + h) + ui->U + r;
     tnsColor4d(1, 1, 1, 1);
     tnsVertexArray2d(verts, 2);
     tnsPackAs(GL_LINES);
+    verts[1]+=lw; verts[3]+=lw;
+    tnsColor4d(0, 0, 0, 1);
+    tnsVertexArray2d(verts, 2);
+    tnsPackAs(GL_LINES);
+
+    real circleR=lw*8;
 
     tnsColor4dv(RealColor);
-    tnsMakeCircle2d(verts, 16, PickerPos[0], PickerPos[1], 8,0);
+    tnsMakeCircle2d(verts, 16, PickerPos[0], PickerPos[1], circleR,0);
     tnsVertexArray2d(verts, 16);
     tnsPackAs(GL_TRIANGLE_FAN);
     tnsColor4d(1, 1, 1, 1);
     tnsVertexArray2d(verts, 16);
     tnsPackAs(GL_LINE_LOOP);
-    tnsMakeCircle2d(verts, 16, PickerPos[0], PickerPos[1], 7,0);
+    tnsMakeCircle2d(verts, 16, PickerPos[0], PickerPos[1], circleR-lw,0);
     tnsColor4d(0.1, 0.1, 0.1, 1);
     tnsVertexArray2d(verts, 16);
     tnsPackAs(GL_LINE_LOOP);
+    tnsLineWidth(1);
 
     if(ui->Extra->HeightCoeff>=0) tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);