static void PopulateOCIOMenus() { OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig(); int csMenuID = glutCreateMenu(imageColorSpace_CB); for(int i=0; i<config->getNumColorSpaces(); ++i) { glutAddMenuEntry(config->getColorSpaceNameByIndex(i), i); } int deviceMenuID = glutCreateMenu(displayDevice_CB); for(int i=0; i<config->getNumDisplays(); ++i) { glutAddMenuEntry(config->getDisplay(i), i); } int transformMenuID = glutCreateMenu(transform_CB); const char * defaultDisplay = config->getDefaultDisplay(); for(int i=0; i<config->getNumViews(defaultDisplay); ++i) { glutAddMenuEntry(config->getView(defaultDisplay, i), i); } glutCreateMenu(menuCallback); glutAddSubMenu("Image ColorSpace", csMenuID); glutAddSubMenu("Transform", transformMenuID); glutAddSubMenu("Device", deviceMenuID); glutAttachMenu(GLUT_RIGHT_BUTTON); }
void displayDevice_CB(int id) { OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig(); const char * display = config->getDisplay(id); if(!display) return; g_display = display; const char * csname = config->getDisplayColorSpaceName(g_display.c_str(), g_transformName.c_str()); if(!csname) { g_transformName = config->getDefaultView(g_display.c_str()); } UpdateOCIOGLState(); glutPostRedisplay(); }
static void PopulateOCIOMenus() { OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig(); int csMenuID = glutCreateMenu(imageColorSpace_CB); std::map<std::string, int> families; for(int i=0; i<config->getNumColorSpaces(); ++i) { const char * csName = config->getColorSpaceNameByIndex(i); if(csName && *csName) { OCIO::ConstColorSpaceRcPtr cs = config->getColorSpace(csName); if(cs) { const char * family = cs->getFamily(); if(family && *family) { if(families.find(family)==families.end()) { families[family] = glutCreateMenu(imageColorSpace_CB); glutAddMenuEntry(csName, i); glutSetMenu(csMenuID); glutAddSubMenu(family, families[family]); } else { glutSetMenu(families[family]); glutAddMenuEntry(csName, i); } } else { glutSetMenu(csMenuID); glutAddMenuEntry(csName, i); } } } } int deviceMenuID = glutCreateMenu(displayDevice_CB); for(int i=0; i<config->getNumDisplays(); ++i) { glutAddMenuEntry(config->getDisplay(i), i); } int transformMenuID = glutCreateMenu(transform_CB); const char * defaultDisplay = config->getDefaultDisplay(); for(int i=0; i<config->getNumViews(defaultDisplay); ++i) { glutAddMenuEntry(config->getView(defaultDisplay, i), i); } int lookMenuID = glutCreateMenu(look_CB); for(int i=0; i<config->getNumLooks(); ++i) { glutAddMenuEntry(config->getLookNameByIndex(i), i); } glutCreateMenu(menuCallback); glutAddSubMenu("Image ColorSpace", csMenuID); glutAddSubMenu("Transform", transformMenuID); glutAddSubMenu("Device", deviceMenuID); glutAddSubMenu("Looks Override", lookMenuID); glutAttachMenu(GLUT_RIGHT_BUTTON); }