*/}}
浏览代码

Fix icc loader

YimingWu 1 周之前
父节点
当前提交
40fe87fb64
共有 2 个文件被更改,包括 8 次插入8 次删除
  1. 7 8
      resources/la_operators.c
  2. 1 0
      resources/la_translations_zh-hans.c

+ 7 - 8
resources/la_operators.c

@@ -2680,12 +2680,9 @@ static int la_InitProofLUT(void** lut, cmsHPROFILE cmyk_profile, cmsHPROFILE rgb
         INTENT_ABSOLUTE_COLORIMETRIC,INTENT_ABSOLUTE_COLORIMETRIC,cmsFLAGS_HIGHRESPRECALC|cmsFLAGS_SOFTPROOFING|cmsFLAGS_NOOPTIMIZE);
         INTENT_ABSOLUTE_COLORIMETRIC,INTENT_ABSOLUTE_COLORIMETRIC,cmsFLAGS_HIGHRESPRECALC|cmsFLAGS_SOFTPROOFING|cmsFLAGS_NOOPTIMIZE);
     if(!htransform){ (*lut)=0; return 0; }
     if(!htransform){ (*lut)=0; return 0; }
     real data[LA_LUT_PIXCOUNT*3];
     real data[LA_LUT_PIXCOUNT*3];
-    real cmyk8[LA_LUT_PIXCOUNT*4];
     int prec=LA_LUT_PRECISION;
     int prec=LA_LUT_PRECISION;
-    for(int i=0;i<prec;i++){
-        int counti=i*prec*prec;
-        for(int j=0;j<prec;j++){
-            int countj=j*prec;
+    for(int i=0;i<prec;i++){ int counti=i*prec*prec;
+        for(int j=0;j<prec;j++){ int countj=j*prec;
             for(int k=0;k<prec;k++){
             for(int k=0;k<prec;k++){
                 real* p=&data[(counti+countj+k)*3];
                 real* p=&data[(counti+countj+k)*3];
                 p[0]=((real)i)/LA_LUT_VAL; p[1]=((real)j)/LA_LUT_VAL; p[2]=((real)k)/LA_LUT_VAL;
                 p[0]=((real)i)/LA_LUT_VAL; p[1]=((real)j)/LA_LUT_VAL; p[2]=((real)k)/LA_LUT_VAL;
@@ -2704,8 +2701,8 @@ int laLoadProofingICC(char* path){
     cmsHPROFILE d65p3 = la_CreateProfileD65P3();
     cmsHPROFILE d65p3 = la_CreateProfileD65P3();
     char* lut1,*lut2,*lut3; int res=0;
     char* lut1,*lut2,*lut3; int res=0;
     la_InitProofLUT(&lut1,cmyk,srgb); if(!lut1){ goto cleanup; }
     la_InitProofLUT(&lut1,cmyk,srgb); if(!lut1){ goto cleanup; }
-    la_InitProofLUT(&lut2,cmyk,srgb); if(!lut2){ goto cleanup; }
-    la_InitProofLUT(&lut3,cmyk,srgb); if(!lut3){ goto cleanup; }
+    la_InitProofLUT(&lut2,cmyk,clay); if(!lut2){ goto cleanup; }
+    la_InitProofLUT(&lut3,cmyk,d65p3); if(!lut3){ goto cleanup; }
 
 
     laProofingLUT *pl=memAcquire(sizeof(laProofingLUT));
     laProofingLUT *pl=memAcquire(sizeof(laProofingLUT));
     char* name=strGetLastSegment(path,LA_PATH_SEP);
     char* name=strGetLastSegment(path,LA_PATH_SEP);
@@ -2716,7 +2713,9 @@ int laLoadProofingICC(char* path){
     laSetProofingLut(pl);
     laSetProofingLut(pl);
     res=1;
     res=1;
 cleanup:
 cleanup:
-    if(lut1) free(lut1); if(lut2) free(lut2); if(lut3) free(lut3);
+    if(res==0){
+        if(lut1) free(lut1); if(lut2) free(lut2); if(lut3) free(lut3);
+    }
     cmsCloseProfile(srgb); cmsCloseProfile(clay); cmsCloseProfile(d65p3);
     cmsCloseProfile(srgb); cmsCloseProfile(clay); cmsCloseProfile(d65p3);
     return res;
     return res;
 }
 }

+ 1 - 0
resources/la_translations_zh-hans.c

@@ -19,6 +19,7 @@
 #include "la_5.h"
 #include "la_5.h"
 
 
 static const char *entries[]={
 static const char *entries[]={
+"No icc profiles for soft proofing has been loaded.", "未加载任何用于软打样的icc配置文件。",
 "Close Toolbox", "关闭工具箱",
 "Close Toolbox", "关闭工具箱",
 "Select a toolbox:", "选择一个工具箱:",
 "Select a toolbox:", "选择一个工具箱:",
 "Floating Panel", "浮动面板",
 "Floating Panel", "浮动面板",