|
@@ -1141,6 +1141,45 @@ int laaction_VerifyRootObject(void* Parent, laPropContainer* ParentType, void* C
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+void* lagetraw_ProofingData(laProofingLUT* pl, int* r_size, int* ret_is_copy){
|
|
|
+ int single_size=LA_LUT_PIXCOUNT*3;
|
|
|
+ *r_size=3*sizeof(char)*single_size; // 3x rgb x pixcount
|
|
|
+ *ret_is_copy=1;
|
|
|
+ void* data=malloc(*r_size);
|
|
|
+ memcpy(data,pl->TablesRGB,single_size);
|
|
|
+ memcpy(&data[single_size],pl->TableClay,single_size);
|
|
|
+ memcpy(&data[single_size*2],pl->TableD65P3,single_size);
|
|
|
+ return data;
|
|
|
+}
|
|
|
+void lasetraw_ProofingData(laProofingLUT* pl, void* data, int DataSize){
|
|
|
+ int single_size=LA_LUT_PIXCOUNT*3; if(DataSize<single_size*3) return;
|
|
|
+ if(!pl->TablesRGB)pl->TablesRGB=malloc(single_size); memcpy(pl->TablesRGB,data,single_size);
|
|
|
+ if(!pl->TableClay)pl->TableClay=malloc(single_size); memcpy(pl->TableClay,&data[single_size],single_size);
|
|
|
+ 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);
|
|
|
+}
|
|
|
+int lagetstate_ProofingProfile(laProofingLUT* pl){
|
|
|
+ if(pl->TablesRGB==MAIN.ProofingLUT[0]) 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;
|
|
|
+}
|
|
|
+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;
|
|
|
}
|
|
@@ -1835,6 +1874,9 @@ 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);
|
|
|
+
|
|
|
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);
|
|
|
laAddIntProperty(p, "interface_size", "Interface Size", "The height of one row of ui item", 0,0,0,64, 16, 1, 40,0,offsetof(LA, UiRowHeight), 0,laset_UiRowHeight, 0,0,0,0,0,0,0,0,0);
|
|
@@ -1884,6 +1926,13 @@ void la_RegisterInternalProps(){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ p = laAddPropertyContainer("la_proofing_profile", "Poofing Profile", "Profile for soft proofing", 0,0,sizeof(laProofingLUT), 0,0,1);{
|
|
|
+ laAddIntProperty(p,"__move","Move Slider","Move Slider",LA_WIDGET_HEIGHT_ADJUSTER,0,0,0,0,0,0,0,0,0,laset_ProofingProfileMove,0,0,0,0,0,0,0,0,LA_UDF_IGNORE);
|
|
|
+ laAddStringProperty(p,"name","Name","Name of the profile",0,0,0,0,1,offsetof(laProofingLUT,Name),0,0,0,0,0);
|
|
|
+ laAddRawProperty(p,"raw_data","Raw Data","Raw data representing the lut",-1,0,lagetraw_ProofingData,lasetraw_ProofingData,0);
|
|
|
+ laAddOperatorProperty(p,"remove","Remove","Remove this proofing profile","LA_remove_proofing_profile",0,0);
|
|
|
+ }
|
|
|
+
|
|
|
p = laAddPropertyContainer("la_input_mapping_bundle", "Input Mapping Bundle", "Bundle of input mapping data", 0,0,sizeof(laInputMappingBundle), 0,0,1);{
|
|
|
laAddSubGroup(p, "mappings","Mappings","Input mappings","la_input_mapping",0,0,0,-1,0,laget_CurrentInputMapping,0,0,0,0,offsetof(laInputMappingBundle,InputMappings),0);
|
|
|
laAddSubGroup(p, "current","Current Mapping","Current input mapping","la_input_mapping",0,0,0,offsetof(laInputMappingBundle,CurrentInputMapping),laget_FirstInputMapping,0,laget_ListNext,0,0,0,0,LA_UDF_REFER);
|