*/}}
Bläddra i källkod

proofing profile changes

YimingWu 2 dagar sedan
förälder
incheckning
1be05a95b6

+ 4 - 4
CMakeLists.txt

@@ -72,10 +72,10 @@ function(embed_resource resource_file_name source_file_name variable_name)
     file(WRITE "${source_file_name}" "${source}")
 endfunction()
 
-file(MAKE_DIRECTORY "BuildResources")
-embed_resource("resources/soft_proof_table_sRGB.lagui.lut" "BuildResources/soft_proof_table_sRGB.lagui.lut.c" "DATA_LUT_PROOF_SRGB")
-embed_resource("resources/soft_proof_table_Clay.lagui.lut" "BuildResources/soft_proof_table_Clay.lagui.lut.c" "DATA_LUT_PROOF_CLAY")
-embed_resource("resources/soft_proof_table_D65P3.lagui.lut" "BuildResources/soft_proof_table_D65P3.lagui.lut.c" "DATA_LUT_PROOF_D65P3")
+# file(MAKE_DIRECTORY "BuildResources")
+# embed_resource("resources/soft_proof_table_sRGB.lagui.lut" "BuildResources/soft_proof_table_sRGB.lagui.lut.c" "DATA_LUT_PROOF_SRGB")
+# embed_resource("resources/soft_proof_table_Clay.lagui.lut" "BuildResources/soft_proof_table_Clay.lagui.lut.c" "DATA_LUT_PROOF_CLAY")
+# embed_resource("resources/soft_proof_table_D65P3.lagui.lut" "BuildResources/soft_proof_table_D65P3.lagui.lut.c" "DATA_LUT_PROOF_D65P3")
 
 add_compile_options("$<$<C_COMPILER_ID:MSVC>:/std:c11>")
 add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")

+ 5 - 9
la_interface.h

@@ -394,6 +394,9 @@ STRUCTURE(LA){
     laListHandle WastedPanels;
     laListHandle Screens;
     laListHandle ProofingLUTs;
+    laProofingLUT* CurrentProofingLUT;
+    GLuint LutTexture;
+    int LutNeedsRefreshing;
     int AutoSwitchColorSpace;
 
     laConfirmData *InvokeConfirmData;
@@ -682,10 +685,6 @@ STRUCTURE(LA){
     laGetBaseNodeTypeF ExtraGetInputNodeType;
     laGetBaseNodeTypeF ExtraGetDriverNodeType;
 
-    void* ProofingLUT[3]; //srgb/clay/d65p3
-    int LutNeedsRefreshing, CurrentLut;
-    GLuint LutTexture;
-
     //laHash256 RootNodes;
     //LLVMContextRef llvmContext;
     //LLVMModuleRef llvmModule;
@@ -906,10 +905,6 @@ extern laPropContainer* LA_PROP_SOCKET_OUT;
 extern laPropContainer* LA_PC_RACK_PAGE;
 extern laProp* LA_PROP_CONTROLLER;
 
-extern unsigned char DATA_LUT_PROOF_SRGB[];
-extern unsigned char DATA_LUT_PROOF_CLAY[];
-extern unsigned char DATA_LUT_PROOF_D65P3[];
-
 #define LA_UI_NORMAL  0
 #define LA_UI_ACTIVE   (1<<0)
 #define LA_UI_EDITING  (1<<1)
@@ -2416,7 +2411,8 @@ void laAddExtraPreferencePage(const char* name, laUiDefineFunc Func);
 void laSetFrameCallbacks(laPreFrameF PreFrame, laPreDrawF PreDraw, laPostFrameF PostFrame);
 void laSetCleanupCallback(laCleanupF Cleanup);
 void laSetInputProcessCallback(laInputProcessF InputProcess);
-void laSetProofingLut(void* data, int which);
+void laSetProofingLut(laProofingLUT* pl);
+int laLoadProofingICC(char* path);
 void laSetMenuBarTemplates(laUiDefineFunc MenuButtons, laUiDefineFunc MenuExtras, const char* ProgramName);
 void laSetAboutTemplates(laUiDefineFunc AboutContent, laUiDefineFunc AboutVersion, laUiDefineFunc AboutAuthor);
 void laSetPreferenceTemplates(laUiDefineFunc PreferencePageDisplay, laUiDefineFunc PreferencePageInput, laUiDefineFunc PreferencePageResource, laUiDefineFunc PreferencePageTheme);

+ 12 - 13
la_kernel.c

@@ -1455,10 +1455,6 @@ int laGetReadyWith(laInitArguments* ia){
 
     if(MAIN.InitArgs.EnableLogStdOut){ MAIN.EnableLogStdOut=1; }
 
-    //laSetProofingLut(DATA_LUT_PROOF_SRGB, 0);
-    //laSetProofingLut(DATA_LUT_PROOF_CLAY, 1);
-    //laSetProofingLut(DATA_LUT_PROOF_D65P3, 2);
-
     logPrintNew("Initialization Completed\n");
     MAIN.InitDone=1;
 
@@ -2376,30 +2372,34 @@ void la_RefreshThemeColor(laTheme* th){
     }
 }
 
-void laSetProofingLut(void* data, int which){
-    TNS_CLAMP(which,0,2);
-    MAIN.ProofingLUT[which]=data;
+void laSetProofingLut(laProofingLUT* pl){
+    MAIN.CurrentProofingLUT = pl;
     MAIN.LutNeedsRefreshing=1;
 }
 void la_RefreshProofingLut(){
     if(!MAIN.CurrentWindow) return;
     int table = MAIN.CurrentWindow->OutputColorSpace;
 
-    if(MAIN.CurrentLut != table+1){ MAIN.LutNeedsRefreshing=1; }
     if(!MAIN.LutNeedsRefreshing) return;
 
     tnsEnableShaderv(T->immShader);
     tnsShader* s = T->immShader;
-    if(!MAIN.ProofingLUT[table] || !MAIN.CurrentWindow->OutputProofing){
-        if(!MAIN.ProofingLUT[table]){ MAIN.CurrentWindow->OutputProofing=0; }
-        return;
+    if(!MAIN.CurrentProofingLUT){ MAIN.CurrentProofingLUT=MAIN.ProofingLUTs.pFirst; }
+    if(!MAIN.CurrentProofingLUT || !MAIN.CurrentWindow->OutputProofing){ MAIN.CurrentWindow->OutputProofing=0; return; }
+    char* tabledata=0;
+    switch(table){
+        default:
+        case 0: tabledata=MAIN.CurrentProofingLUT->TablesRGB; break;
+        case 1: tabledata=MAIN.CurrentProofingLUT->TableClay; break;
+        case 2: tabledata=MAIN.CurrentProofingLUT->TableD65P3; break;
     }
+    if(!tabledata){ MAIN.CurrentWindow->OutputProofing=0; return; }
 
     if(!MAIN.LutTexture) glGenTextures(1, &MAIN.LutTexture);
     tnsActiveTexture(GL_TEXTURE3);
     glBindTexture(GL_TEXTURE_3D, MAIN.LutTexture);
     glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-    glTexImage3D(GL_TEXTURE_3D,0,GL_RGB,LA_LUT_PRECISION,LA_LUT_PRECISION,LA_LUT_PRECISION,0,GL_RGB, GL_UNSIGNED_BYTE,MAIN.ProofingLUT[table]);
+    glTexImage3D(GL_TEXTURE_3D,0,GL_RGB,LA_LUT_PRECISION,LA_LUT_PRECISION,LA_LUT_PRECISION,0,GL_RGB, GL_UNSIGNED_BYTE,tabledata);
     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
@@ -2407,7 +2407,6 @@ void la_RefreshProofingLut(){
     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     //glBindTexture(GL_TEXTURE_3D,0);
     tnsActiveTexture(GL_TEXTURE0);
-    MAIN.CurrentLut = table+1;
     MAIN.LutNeedsRefreshing=0;
 }
 

+ 1 - 1
la_util.c

@@ -1729,7 +1729,7 @@ laStringSplitor *strSplitPath(const char *path,char terminator){
     char *pivot = path;
     char *temp_result;
     char Type = terminator?terminator:'.';
-    char NextType = '.';
+    char NextType = terminator?terminator:'.';
 
     if (!path || !path[0]) return 0;
 

+ 6 - 11
resources/la_operators.c

@@ -446,7 +446,7 @@ laFileBrowser *la_FileBrowserInit(laOperator *a){
 
     if (strArgumentMatch(a->ExtraInstructionsP, "select", "folder")){ fb->SelectFolder = LA_FILE_SELECT_FOLDER; }
     if (strArgumentMatch(a->ExtraInstructionsP, "warn_file_exists", "true")){ fb->WarnFileExists = 1; }
-    if ((arg=strGetArgumentString(a->ExtraInstructionsP, "filter_extensions"))){ fb->ss_filter_extensions=strSplitPath(arg,','); }
+    if ((arg=strGetArgumentString(a->ExtraInstructionsP, "filter_extensions"))){ fb->ss_filter_extensions=strSplitPath(arg,'.'); }
     if ((arg=strGetArgumentString(a->ExtraInstructionsP, "use_extension"))){ strcpy(fb->UseExtension, arg); }
     if ((arg=strGetArgumentString(a->ExtraInstructionsP, "filter_type"))){ sscanf(arg,"%d",&fb->FilterType); }
     if ((arg=strGetArgumentString(a->ExtraInstructionsP, "use_type"))){ sscanf(arg,"%d",&fb->UseType); }
@@ -2697,7 +2697,7 @@ static int la_InitProofLUT(void** lut, cmsHPROFILE cmyk_profile, cmsHPROFILE rgb
     char* table = *lut;
     cmsDoTransform(htransform,data,table,LA_LUT_PIXCOUNT);
 }
-static int la_LoadProofingICC(char* path){
+int laLoadProofingICC(char* path){
     cmsHPROFILE cmyk = cmsOpenProfileFromFile(path,"r");
     cmsHPROFILE srgb = cmsCreate_sRGBProfile();
     cmsHPROFILE clay = la_CreateProfileClay();
@@ -2712,30 +2712,25 @@ static int la_LoadProofingICC(char* path){
     strSafeSet(&pl->Name,name);
     pl->TablesRGB=lut1; pl->TableClay=lut2; pl->TableD65P3=lut3;
 
-    laSetProofingLut(lut1,0); laSetProofingLut(lut2,1); laSetProofingLut(lut3,2);
-
     lstAppendItem(&MAIN.ProofingLUTs,pl);
+    laSetProofingLut(pl);
     return 1;
 }
 static void la_RemoveProofingProfile(laProofingLUT* pl){
     laProofingLUT* npl=pl->Item.pNext?pl->Item.pNext:pl->Item.pPrev;
     free(pl->TablesRGB); free(pl->TableClay); free(pl->TableD65P3);
     strSafeDestroy(&pl->Name); lstRemoveItem(&MAIN.ProofingLUTs,pl); memFree(pl);
-    if(npl){
-        laSetProofingLut(npl->TablesRGB,0); laSetProofingLut(npl->TableClay,1); laSetProofingLut(npl->TableD65P3,2);
-    }else{
-        laSetProofingLut(0,0); laSetProofingLut(0,1); laSetProofingLut(0,2);
-    }
+    laSetProofingLut(npl);
 }
 int OPINV_NewProofingLUT(laOperator *a, laEvent *e){
-    laInvoke(a, "LA_file_dialog", e, 0, "filter_extensions=icc;use_extension=icc", 0);
+    laInvoke(a, "LA_file_dialog", e, 0, "filter_extensions=icc.icm", 0);
     return LA_RUNNING;
 }
 int OPMOD_NewProofingLUT(laOperator *a, laEvent *e){
     if(a->ConfirmData){
         if(a->ConfirmData->Mode==LA_CONFIRM_OK){
             if(a->ConfirmData->StrData){
-                if(!la_LoadProofingICC(a->ConfirmData->StrData)){
+                if(!laLoadProofingICC(a->ConfirmData->StrData)){
                     laEnableMessagePanel(a,0,"Error","Could not load this color profile to use for proofing.",e->x,e->y,LA_RH*15,e);
                 }
             }

+ 7 - 14
resources/la_properties.c

@@ -1159,26 +1159,19 @@ void lasetraw_ProofingData(laProofingLUT* pl, void* data, int DataSize){
     if(!pl->TableD65P3)pl->TableD65P3=malloc(single_size); memcpy(pl->TableD65P3,&data[single_size*2],single_size);
 }
 void laset_ActiveProofingProfile(void* unused, laProofingLUT* pl){
-    if(!pl->TablesRGB || !pl->TableD65P3 || !pl->TableClay){ return; }
-    laSetProofingLut(pl->TablesRGB,0); laSetProofingLut(pl->TableClay,1); laSetProofingLut(pl->TableD65P3,2);
+    if(!pl->TablesRGB || !pl->TableD65P3 || !pl->TableClay){ laSetProofingLut(0); }
+    laSetProofingLut(pl);
 }
 int lagetstate_ProofingProfile(laProofingLUT* pl){
-    if(pl->TablesRGB==MAIN.ProofingLUT[0]) return 1; return -1;
+    if(pl==MAIN.CurrentProofingLUT) return 1; return -1;
 }
 void laset_ProofingProfileMove(laProofingLUT* pl, int move){
     if(move<0 && pl->Item.pPrev){ lstMoveUp(&MAIN.ProofingLUTs, pl); laNotifyUsers("la.user_preferences.proofing_profiles"); }
     elif(move>0 && pl->Item.pNext){ lstMoveDown(&MAIN.ProofingLUTs, pl); laNotifyUsers("la.user_preferences.proofing_profiles"); }
 }
-int laget_CurrentProofingID(void* unused){
-    int i=0; for(laProofingLUT* pl=MAIN.ProofingLUTs.pFirst;pl;pl=pl->Item.pNext){ if(pl->TablesRGB==MAIN.ProofingLUT[0]) break; i++; }
-    return i;
+int laget_HasProofingProfile(void* unused){
+    return MAIN.ProofingLUTs.pFirst!=0;
 }
-void laset_CurrentProofingID(void* unused, int id){
-    laProofingLUT* pl=MAIN.ProofingLUTs.pFirst; for(int i=0;i<id && pl;i++){ if(pl->TablesRGB==MAIN.ProofingLUT[0]) break; pl=pl->Item.pNext; }
-    if(!pl) return;
-    laSetProofingLut(pl->TablesRGB,0); laSetProofingLut(pl->TableClay,1); laSetProofingLut(pl->TableD65P3,2);
-}
-
 
 void lareset_Main(void* Unused){
     return;
@@ -1874,8 +1867,8 @@ void la_RegisterInternalProps(){
             laAddEnumItemAs(ep, "NONE", "None", "Do not do color management on the window", 0, 0);
             laAddEnumItemAs(ep, "ENABLED", "Enabled", "Enable color management on the window", 1, 0);
 
-            laAddSubGroup(p,"proofing_profiles","Proofing Profiles","Soft proofing color profiles","la_proofing_profile",0,0,0,-1,0,0,0,laset_ActiveProofingProfile,lagetstate_ProofingProfile,0,offsetof(LA,ProofingLUTs),0);
-            laAddIntProperty(p,"current_proofing_id","Current Proofing ID","Current soft proofing id in the list",0,0,0,0,0,0,0,0,-1,laget_CurrentProofingID,laset_CurrentProofingID,0,0,0,0,0,0,0,0,0);
+            laAddSubGroup(p,"proofing_profiles","Proofing Profiles","Soft proofing color profiles","la_proofing_profile",0,0,0,offsetof(LA, CurrentProofingLUT),0,0,0,laset_ActiveProofingProfile,lagetstate_ProofingProfile,0,offsetof(LA,ProofingLUTs),0);
+            laAddIntProperty(p,"has_proofing_profile","Has Proofing Profile","Any icc profiles are loaded",0,0,0,0,0,0,0,0,0,laget_HasProofingProfile,0,0,0,0,0,0,0,0,0,LA_UDF_IGNORE);
 
             laAddFloatProperty(p, "margin_size", "Margin Size", "The global margin factor", 0,0,0,2.0f, 0.1f, 0.02, 1.0f, 0,offsetof(LA, MarginSize), 0,laset_MarginSize, 0,0,0,0,0,0,0,0,0);
             laAddFloatProperty(p, "font_size", "Font Size", "The height of the font related to the row height", 0,0,0,1.0f, 0.1f, 0.02, 0.75, 0,offsetof(LA, FontSize), 0,laset_FontSize, 0,0,0,0,0,0,0,0,0);

+ 2 - 2
resources/la_templates.c

@@ -621,7 +621,7 @@ void laui_DefaultMenuBarActual(laUiList *uil, laPropPack *pp, laPropPack *actins
                 }laEndCondition(uil, uc1);
 #endif
                 laShowItemFull(uil,c,0,"la.windows.output_show_overflow",0,"text=🟩;",0,0)->Flags|=LA_UI_FLAGS_NO_CONFIRM;
-                laUiItem* hasproof=laOnConditionThat(uil,c,laPropExpression(0,"la.user_preferences.proofing_profiles"));{
+                laUiItem* hasproof=laOnConditionThat(uil,c,laPropExpression(0,"la.user_preferences.has_proofing_profile"));{
                     laUiItem* proofbtn=laShowItemFull(uil,c,0,"la.windows.output_proofing",0,"icon=🖶",0,0);
                         proofbtn->Flags|=LA_UI_FLAGS_CYCLE|LA_UI_FLAGS_ICON|LA_UI_FLAGS_HIGHLIGHT|LA_UI_FLAGS_NO_CONFIRM;
                     //laUiItem* enproof=laOnConditionThat(uil,c,laPropExpression(&proofbtn->PP,""));{
@@ -1455,7 +1455,7 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
                 laUiItem*bs=laBeginRow(muil,mcr,0,0);
                 laShowItem(muil,mcr,0,"LA_new_proofing_profile");
                 laEndRow(muil,bs);
-                laUiItem* noproof=laOnConditionThat(muil,mc,laNot(laPropExpression(0,"la.user_preferences.proofing_profiles")));{
+                laUiItem* noproof=laOnConditionThat(muil,mc,laNot(laPropExpression(0,"la.user_preferences.has_proofing_profile")));{
                     laShowLabel(muil,mcr,"No icc profiles for soft proofing has been loaded.",0,0)->Flags|=LA_TEXT_LINE_WRAP;
                 }laElse(muil,noproof);{
                     laShowItemFull(muil, mcr, &UP->PP, "proofing_profiles",0,0,laui_ProofingProfile,0);

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
resources/soft_proof_table_Clay.lagui.lut


BIN
resources/soft_proof_table_D65P3.lagui.lut


BIN
resources/soft_proof_table_sRGB.lagui.lut


Vissa filer visades inte eftersom för många filer har ändrats