*/}}
1
0
Yiming Wu vor 2 Jahren
Ursprung
Commit
f614287ced
4 geänderte Dateien mit 24 neuen und 11 gelöschten Zeilen
  1. 3 1
      la_kernel.c
  2. 3 0
      la_tns.h
  3. 16 8
      la_tns_kernel.c
  4. 2 2
      resources/la_nodes_basic.c

+ 3 - 1
la_kernel.c

@@ -6257,6 +6257,7 @@ int la_ProcessSysMessage(){
             break;
         case MotionNotify:
             la_SendMouseEvent(e.xmotion.window, LA_MOUSEMOVE, e.xmotion.x,e.xmotion.y);
+            MAIN.IsPen=0;
             break;
         case ButtonPress:
             type=LA_MOUSEDOWN;
@@ -6266,6 +6267,7 @@ int la_ProcessSysMessage(){
             elif(e.xbutton.button==4){type=LA_MOUSEUP|LA_KEY_MOUSE_SCROLL;}
             elif(e.xbutton.button==5){type=LA_MOUSEDOWN|LA_KEY_MOUSE_SCROLL;}
             la_SendMouseEvent(e.xbutton.window, type, e.xbutton.x,e.xbutton.y);
+            MAIN.IsPen=0;
             break;
         case ButtonRelease:
             type=LA_MOUSEUP;
@@ -6273,6 +6275,7 @@ int la_ProcessSysMessage(){
             elif(e.xbutton.button==2){type|=LA_KEY_MOUSE_MIDDLE;}
             elif(e.xbutton.button==3){type|=LA_KEY_MOUSE_RIGHT;}
             la_SendMouseEvent(e.xbutton.window, type, e.xbutton.x,e.xbutton.y);
+            MAIN.IsPen=0;
             break;
         case KeyPress:
                 InputCount=Xutf8LookupString(MAIN.ic, (XKeyPressedEvent*)&e, MAIN.InputBuf, MAIN.InputBufMax, &InputKeysym, &InputStatus);
@@ -6335,7 +6338,6 @@ int la_ProcessSysMessage(){
         default:
             break;
         }
-        MAIN.IsPen=0;
     }
 
     for(laWindow* w=MAIN.Windows.pFirst;w;w=w->Item.pNext){

+ 3 - 0
la_tns.h

@@ -1332,6 +1332,9 @@ void tns2LogsRGB(real* srgb);
 void tns2LinearsRGB(real* srgb);
 void tnsRGB2OKLAB(real* rgb, real* oklab);
 void tnsOKLAB2RGB(real* oklab, real* rgb);
+
+void tnsHCY2RGBLinear(real *hcy, real *rgb);
+void tnsRGB2HCYLinear(real *rgb, real *hcy);
 void tnsHCY2RGB(real *hcy, real *rgb);
 void tnsRGB2HCY(real *rgb, real *hcy);
 

+ 16 - 8
la_tns_kernel.c

@@ -4026,7 +4026,7 @@ static void _get_Cs(real L, real a_, real b_,real *rC_0, real *rC_mid, real *rC_
 
 	*rC_0=C_0; *rC_mid=C_mid; *rC_max=C_max;
 }
-void tnsHCY2RGB(real *hcy, real *rgb){
+void tnsHCY2RGBLinear(real *hcy, real *rgb){
 	real h = hcy[0]; real s = hcy[1]; real l = hcy[2];
 
 	if (l >= 1.0f){ tnsVectorSet3(rgb,1,1,1); return; }
@@ -4057,15 +4057,10 @@ void tnsHCY2RGB(real *hcy, real *rgb){
 
     real okl[3]={L, C * a_, C * b_};
 	tnsOKLAB2RGB(okl, rgb);
-    rgb[0]=_srgb_transfer_function(rgb[0]);
-    rgb[1]=_srgb_transfer_function(rgb[1]);
-    rgb[2]=_srgb_transfer_function(rgb[2]);
 }
-void tnsRGB2HCY(real *rgb, real *hcy){
+void tnsRGB2HCYLinear(real *rgb, real *hcy){
 	real lab[3]; real lrgb[3];
-    lrgb[0]=_srgb_transfer_function_inv(rgb[0]);
-    lrgb[1]=_srgb_transfer_function_inv(rgb[1]);
-    lrgb[2]=_srgb_transfer_function_inv(rgb[2]);
+    lrgb[0]=rgb[0]; lrgb[1]=rgb[1]; lrgb[2]=rgb[2];
     tnsRGB2OKLAB(lrgb,lab);
 
     if(lab[0]>=1.0f-1e-4){ tnsVectorSet3(hcy,0,0,1); return; }
@@ -4100,6 +4095,19 @@ void tnsRGB2HCY(real *rgb, real *hcy){
 	real l = _toe(L);
 	hcy[0]=h; hcy[1]=s; hcy[2]=l;
 }
+void tnsHCY2RGB(real *hcy, real *rgb){
+    tnsHCY2RGBLinear(hcy,rgb);
+    rgb[0]=_srgb_transfer_function(rgb[0]);
+    rgb[1]=_srgb_transfer_function(rgb[1]);
+    rgb[2]=_srgb_transfer_function(rgb[2]);
+}
+void tnsRGB2HCY(real *rgb, real *hcy){
+	real lrgb[3];
+    lrgb[0]=_srgb_transfer_function_inv(rgb[0]);
+    lrgb[1]=_srgb_transfer_function_inv(rgb[1]);
+    lrgb[2]=_srgb_transfer_function_inv(rgb[2]);
+    tnsRGB2HCYLinear(lrgb,hcy);
+}
 
 void tnsClearAll(){
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

+ 2 - 2
resources/la_nodes_basic.c

@@ -678,7 +678,7 @@ int IDN_RGB2OKHSLVisit(laRGB2OKHSLNode* n, laListHandle* l){
 int IDN_RGB2OKHSLEval(laRGB2OKHSLNode* n){
     real* in=n->RGB;
     if(LA_SRC_AND_PARENT(n->In) && (n->In->Source->DataType==(LA_PROP_FLOAT|LA_PROP_ARRAY) && n->In->Source->ArrLen>=3)){ in=n->In->Source->Data; }
-    tnsRGB2HCY(in, n->rOut);
+    tnsRGB2HCYLinear(in, n->rOut);
     return 1;
 }
 void laui_RGB2OKHSLNode(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context){
@@ -721,7 +721,7 @@ int IDN_OKHSL2RGBEval(laOKHSL2RGBNode* n){
     if(LA_SRC_AND_PARENT(n->InH) && (n->InH->Source->DataType&LA_PROP_FLOAT)){ in[0]=*((real*)n->InH->Source->Data); }
     if(LA_SRC_AND_PARENT(n->InS) && (n->InS->Source->DataType&LA_PROP_FLOAT)){ in[1]=*((real*)n->InS->Source->Data); }
     if(LA_SRC_AND_PARENT(n->InL) && (n->InL->Source->DataType&LA_PROP_FLOAT)){ in[2]=*((real*)n->InL->Source->Data); }
-    tnsHCY2RGB(in, n->rOut);
+    tnsHCY2RGBLinear(in, n->rOut);
     return 1;
 }
 void laui_OKHSL2RGBNode(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context){