62 virtual std::vector<HOM_ElemPtr<HOM_Desktop> > desktops() = 0;
65 virtual std::vector<HOM_ElemPtr<HOM_RadialMenu> > radialMenus() = 0;
67 const std::string &
name,
68 const char *
label) = 0;
70 SWIGOUT(%kwargs createRadialItem;)
71 SWIGOUT(%newobject createRadialItem;)
74 bool callback=
false) = 0;
77 virtual void injectRadialMenu(
const std::string &
name) = 0;
78 virtual void setDefaultRadialSubmenu(
int location) = 0;
80 virtual std::string _getActiveRadialMenu() = 0;
81 virtual void _setActiveRadialMenu(
const std::string &
name) = 0;
83 virtual void updateMainMenuBar() = 0;
84 virtual std::vector<HOM_ElemPtr<HOM_Pane> > panes() = 0;
85 virtual std::vector<HOM_ElemPtr<HOM_PaneTab> > paneTabs() = 0;
87 virtual std::vector<HOM_ElemPtr<HOM_PaneTab> > currentPaneTabs() = 0;
89 SWIGOUT(%newobject paneTabOfType;)
93 virtual HOM_Pane *findPane(
int pane_id) = 0;
95 SWIGOUT(%newobject findPaneTab;)
98 virtual std::vector<HOM_ElemPtr<HOM_PaneTab> > floatingPaneTabs() = 0;
100 virtual std::vector<HOM_ElemPtr<HOM_FloatingPanel> > floatingPanels() = 0;
102 SWIGOUT(%newobject paneUnderCursor;)
103 virtual HOM_Pane *paneUnderCursor() = 0;
104 SWIGOUT(%newobject paneTabUnderCursor;)
107 virtual bool isUserInteracting() = 0;
108 virtual void setUserInteracting(
bool interacting) = 0;
113 SWIGOUT(%kwargs displayConfirmation;)
114 virtual bool displayConfirmation(
117 const char *
help = NULL,
118 const char *title = NULL,
119 const char *details = NULL,
120 const char *details_label = NULL,
121 HOM_EnumValue &suppress = HOM_confirmType::OverwriteFile) = 0;
123 SWIGOUT(%kwargs displayCustomConfirmation;)
124 virtual int displayCustomConfirmation(
126 const std::vector<std::string> &buttons =
127 std::vector<std::string>(),
129 int default_choice = 0,
130 int close_choice = -1,
131 const char *
help = NULL,
132 const char *title = NULL,
133 const char *details = NULL,
134 const char *details_label = NULL,
135 HOM_EnumValue &suppress = HOM_confirmType::OverwriteFile) = 0;
137 SWIGOUT(%kwargs displayMessage;)
138 virtual int displayMessage(
140 const std::vector<std::string> &buttons =
141 std::vector<std::string>(1,
"OK"),
143 int default_choice = 0,
144 int close_choice = -1,
145 const char *
help = NULL,
146 const char *title = NULL,
147 const char *details = NULL,
148 const char *details_label = NULL,
149 bool details_expanded =
false,
150 HOM_EnumValue& suppress = HOM_confirmType::NoConfirmType) = 0;
153 virtual std::pair<int, std::string> readInput(
155 const std::vector<std::string> &buttons =
156 std::vector<std::string>(1,
"OK"),
158 int default_choice = 0,
159 int close_choice = -1,
160 const char *
help = NULL,
161 const char *title = NULL,
162 const char *initial_contents = NULL) = 0;
164 SWIGOUT(%kwargs readMultiInput;)
165 virtual std::pair<
int, std::vector<std::string> > readMultiInput(
167 const std::vector<std::string> &input_labels,
168 const std::vector<int> &password_input_indices = std::vector<int>(),
169 const std::vector<std::string> &buttons =
170 std::vector<std::string>(1,
"OK"),
172 int default_choice = 0,
173 int close_choice = -1,
174 const char *
help = NULL,
175 const char *title = NULL,
176 const std::vector<std::string> &initial_contents =
177 std::vector<std::string>() ) = 0;
179 SWIGOUT(%kwargs selectFromList;)
180 virtual std::vector<int> selectFromList(
181 const std::vector<std::string> &choices,
182 const std::vector<int> &default_choices = std::vector<int>(),
183 bool exclusive =
false,
184 const char *message = NULL,
185 const char *title = NULL,
186 const char *column_header =
"Choices",
187 int num_visible_rows = 10,
188 bool clear_on_cancel =
false,
192 bool condense_paths =
false) = 0;
194 SWIGOUT(%kwargs selectFromTree;)
195 virtual std::vector<std::string> selectFromTree(
196 const std::vector<std::string> &choices,
197 const std::vector<std::string> &picked = std::vector<std::string>(),
198 bool exclusive =
false,
199 const char *message = NULL,
200 const char *title = NULL,
201 bool clear_on_cancel =
false,
204 bool allow_branch_selection =
false,
205 bool allow_compound_selection =
true
209 virtual std::string _selectFile(
210 const char *start_directory = NULL,
211 const char *title = NULL,
212 bool collapse_sequences =
false,
214 const std::vector<HOM_EnumValue *>&
215 file_types = {&HOM_fileType::Any},
217 const char *default_value = NULL,
218 bool multiple_select =
false,
219 bool image_chooser =
false,
220 bool ignore_preferences =
false,
221 HOM_EnumValue &chooser_mode = HOM_fileChooserMode::ReadAndWrite,
226 virtual std::vector<std::string> _selectNodeInternal(
230 const char *title = NULL,
233 bool multiple_select =
false,
234 void *custom_node_filter_callback =
nullptr) = 0;
238 virtual std::vector<std::string> _selectMultipleNodes(
242 const char *title = NULL,
245 void *custom_node_filter_callback =
nullptr) = 0;
248 virtual std::vector<std::string> _selectNodeDataInternal(
249 const char *title = NULL,
250 const char *message = NULL,
253 const std::vector<std::string> &
254 initial_selection = std::vector<std::string>(),
256 bool multiple_select =
false,
257 bool include_data_type_headers =
true,
258 bool include_parms=
true,
259 bool include_object_transforms=
true,
260 bool include_geometry_bounding_boxes=
true,
261 bool include_geometry_attributes=
true,
262 bool expand_components=
true,
263 void *custom_data_callback=
nullptr,
264 void *custom_node_filter_callback =
nullptr,
265 const char *help_url=
nullptr) = 0;
267 SWIGOUT(%kwargs selectParmTag;)
268 virtual std::vector<std::string> selectParmTag(
273 virtual std::vector<std::string> selectParm(
275 bool bound_parms_only =
false,
277 const char *message = NULL,
278 const char *title = NULL,
279 const std::vector<std::string> &
280 initial_parms = std::vector<std::string>(),
281 bool multiple_select =
true,
285 SWIGOUT(%kwargs selectParmTuple;)
286 virtual std::vector<std::string> selectParmTuple(
288 bool bound_parms_only =
false,
290 const char *message = NULL,
291 const char *title = NULL,
292 const std::vector<std::string> &
293 initial_parm_tuples = std::vector<std::string>(),
294 bool multiple_select =
true,
299 SWIGOUT(%newobject selectColor;)
301 std::map<std::string, hboost::any>
const& options =
302 std::map<std::string, hboost::any>()) = 0;
304 SWIGOUT(%kwargs selectRawColor;)
305 SWIGOUT(%newobject selectRawColor;)
308 std::map<std::string, hboost::any> options;
309 options[
"ocio_pick_raw"] =
true;
310 options[
"ocio_show_info"] =
false;
311 options[
"apply_color_correction"] =
false;
313 return selectColor(initial_color, options);
317 SWIGOUT(%kwargs _openBookmarkEditor;)
318 virtual void _openBookmarkEditor(
HOM_Bookmark *bookmark) = 0;
320 SWIGOUT(%kwargs _openColorEditor;)
321 virtual void _openColorEditor(
322 void *color_changed_callback,
bool include_alpha=
false,
323 HOM_Color *initial_color=
nullptr,
float initial_alpha=1.0
f,
324 std::map<std::string, hboost::any>
const& options =
325 std::map<std::string, hboost::any>()) = 0;
327 virtual void setColorEditorOptions(
328 std::map<std::string, hboost::any>
const& options) = 0;
330 virtual std::map<std::string, hboost::any> colorEditorOptions() = 0;
332 virtual std::vector<HOM_Color> loadPaletteFile(
const char *file) = 0;
333 virtual void savePaletteFile(
const char *file,
334 const std::vector<HOM_Color> &colors) = 0;
337 SWIGOUT(%kwargs _openValueLadder;)
338 virtual void _openValueLadder(
339 float initial_value,
void *value_changed_callback,
341 HOM_EnumValue &data_type=HOM_valueLadderDataType::Float) = 0;
342 virtual void updateValueLadder(
343 int cursor_x,
int cursor_y,
bool alt_key,
bool shift_key) = 0;
344 virtual void closeValueLadder() = 0;
346 SWIGOUT(%kwargs displayFileDependencyDialog;)
349 displayFileDependencyDialog(
351 const std::vector<std::string> &uploaded_files =
352 std::vector<std::string>(),
353 const std::vector<std::string> &forced_unselected_patterns =
354 std::vector<std::string>(),
355 const char *project_dir_variable=
"HIP",
356 bool is_standalone=
true) = 0;
358 virtual void displayNodeHelp(
HOM_NodeType &node_type) = 0;
359 virtual void _openTypePropertiesDialogForNode(
360 HOM_Node &node,
bool promote_spare_parms,
361 bool immediately_save) = 0;
362 virtual void _openTypePropertiesDialogForNodeType(
364 bool immediately_save) = 0;
366 virtual void openRenderDialog(
HOM_RopNode &rop) = 0;
368 virtual void openRenameSelectedDialog(
HOM_Node &network) = 0;
370 SWIGOUT(%kwargs openParameterInterfaceDialog;)
371 virtual void openParameterInterfaceDialog(
HOM_Node &node,
373 const char *open_tab_tree_path =
nullptr) = 0;
377 virtual void addOpaqueTriggerUpdateCallback(
void *py_callback) = 0;
379 virtual void removeOpaqueTriggerUpdateCallback(
void *py_callback) = 0;
382 virtual void triggerUpdate() = 0;
383 virtual void reloadViewportColorSchemes() = 0;
384 virtual void reloadColorScheme() = 0;
385 virtual std::string currentColorScheme() = 0;
387 virtual bool isAutoKey() = 0;
389 virtual std::vector<int> _getTabMenuIconSize() = 0;
392 virtual void addOpaqueSelectionCallback(
void *py_callback) = 0;
394 virtual void removeOpaqueSelectionCallback(
void *py_callback) = 0;
395 virtual void removeAllSelectionCallbacks() = 0;
397 virtual std::vector<void *> opaqueSelectionCallbacks() = 0;
400 virtual void addOpaqueEventLoopCallback(
void *callback) = 0;
402 virtual void removeOpaqueEventLoopCallback(
void *callback) = 0;
404 virtual std::vector<void *> opaqueEventLoopCallbacks() = 0;
406 virtual void postOpaqueEventCallback(
void *callback) = 0;
408 virtual void removePostedOpaqueEventCallback(
void *callback) = 0;
410 virtual void postRedrawFence() = 0;
412 SWIGOUT(%newobject createDialog;)
413 virtual HOM_Dialog *createDialog(
const char *ui_file_name) = 0;
414 SWIGOUT(%newobject findDialog;)
415 virtual HOM_Dialog *findDialog(
const char *ui_file_name) = 0;
416 virtual std::vector<HOM_ElemPtr<HOM_Dialog> > dialogs() = 0;
419 virtual void opaqueWaitUntil(
void *condition_callback) = 0;
421 SWIGOUT(%kwargs writePythonShellHistoryFile;)
422 virtual void writePythonShellHistoryFile(
const char *
filename=NULL) = 0;
424 SWIGOUT(%kwargs readPythonShellHistoryFile;)
425 virtual void readPythonShellHistoryFile(
const char *
filename=NULL) = 0;
427 SWIGOUT(%kwargs setStatusMessage;)
428 virtual void setStatusMessage(
431 virtual std::pair<std::string, HOM_EnumValue *> statusMessage() = 0;
433 virtual bool _processEvents() = 0;
435 virtual void openAssetUploadDialog(
436 HOM_Node *uploading_node,
const char *session_key,
439 virtual void openAssetDependenciesDialog(
440 const std::vector<HOM_Node *> &uploading_nodes,
441 const std::vector<HOM_Node *> &uploaded_nodes,
442 const char *session_key,
445 virtual bool hasDragSourceData(
const char *
label) = 0;
446 SWIGOUT(%kwargs getDragSourceData;)
449 virtual std::string resourceValueFromName(
const char *
name) = 0;
452 virtual double globalScaleFactor() = 0;
453 virtual int scaledSize(
int size) = 0;
455 virtual double inchesToPixels(
double inches) = 0;
456 virtual double pixelsToInches(
double pixels) = 0;
458 virtual void copyTextToClipboard(
const char *text) = 0;
459 virtual std::string getTextFromClipboard() = 0;
461 virtual std::vector<std::string> hotkeys(
const char *hotkey_symbol) = 0;
462 virtual std::string hotkeyDescription(
const char *hotkey_symbol) = 0;
463 virtual bool isKeyMatch(
const char *key,
const char *hotkey_symbol) = 0;
465 virtual std::string _geoSpreadsheetCellText(
int sheet_id,
int row,
int col) = 0;
466 virtual void openCaptureWeightSpreadsheet(
HOM_Node *node,
467 const char *pattern = NULL) = 0;
468 virtual std::string _openCaptureWeightSpreadsheet2(
HOM_Node* node) = 0;
470 virtual void _closeCaptureWeightSpreadsheet(
const std::string &identifier) = 0;
473 virtual void registerViewerStateFile(std::string
const& state_file) = 0;
474 virtual void registerViewerStates() = 0;
475 virtual void unregisterViewerState(std::string
const& state_typename) = 0;
476 virtual void unregisterViewerStateFile(std::string
const& state_file) = 0;
477 virtual bool isRegisteredViewerState(std::string
const& state_name) = 0;
478 virtual void reloadViewerState(std::string
const& state_typename) = 0;
479 SWIGOUT(%kwargs reloadViewerStates;)
480 virtual void reloadViewerStates(std::vector<std::string>
const& state_names=std::vector<std::string>()) = 0;
482 SWIGOUT(%kwargs viewerStateInfo;)
483 virtual std::string viewerStateInfo(std::vector<std::string>
const& state_names=std::vector<std::string>()) = 0;
486 SWIGOUT(%kwargs viewerHandleInfo;)
487 virtual std::string viewerHandleInfo(std::vector<std::string>
const& handle_names=std::vector<std::string>()) = 0;
489 SWIGOUT(%kwargs printResourceMessage;)
490 virtual void printResourceMessage(
492 std::string
const &message,
493 HOM_EnumValue &message_type = HOM_severityType::Message) = 0;
494 SWIGOUT(%kwargs fireResourceCustomEvent;)
495 virtual void fireResourceCustomEvent(
497 std::map<std::string, hboost::any>
const &user_data,
498 bool queue =
true) = 0;
501 SWIGOUT(%kwargs _openViewerStateCodeGenDialog;)
502 virtual void _openViewerStateCodeGenDialog(
504 void *action_callback,
505 std::string
const &op_name = std::string()) = 0;
508 virtual void addOpaqueResourceEventCallback(
void *py_callback) = 0;
510 virtual void removeOpaqueResourceEventCallback(
void *py_callback) = 0;
513 SWIGOUT(%kwargs _openFileEditor;)
514 virtual void _openFileEditor(
515 std::string
const &title,
516 std::string
const &file_path,
517 void *action_callback =
nullptr,
518 std::map<std::string, hboost::any>
const &
params =
519 std::map<std::string, hboost::any>()) = 0;
521 virtual void showInFileBrowser(
const char *file_path) = 0;
523 SWIGOUT(%newobject showFloatingParameterEditor;)
526 virtual void openParameterExpressionEditor(
HOM_Parm *parm) = 0;
527 virtual void openPreferences(
const char *page,
const char *
label) = 0;
529 virtual bool hideAllMinimizedStowbars() = 0;
530 virtual void setHideAllMinimizedStowbars(
bool hide) = 0;
534 virtual void registerViewerHandles() = 0;
535 virtual void registerViewerHandleFile(std::string
const& handle_file) = 0;
536 virtual void unregisterViewerHandle(std::string
const& handle_name) = 0;
537 virtual void unregisterViewerHandleFile(std::string
const& handle_file) = 0;
538 virtual bool isRegisteredViewerHandle(std::string
const& handle_name) = 0;
539 virtual void reloadViewerHandle(std::string
const& handle_name) = 0;
541 virtual void loadPackage(std::string
const& package_filepath) = 0;
542 SWIGOUT(%kwargs loadPackageArchive;)
543 virtual std::vector<std::string> loadPackageArchive(std::string
const& filepath, std::string
const& extract_path=std::string()) = 0;
544 SWIGOUT(%kwargs unloadPackage;)
545 virtual void unloadPackage(std::string
const& package_filepath,
bool force_unload=
false) = 0;
546 virtual void reloadPackage(std::string
const& package_filepath) = 0;
547 virtual void activatePackage(std::string
const& package_filepath) = 0;
548 virtual void deactivatePackage(std::string
const& package_filepath) = 0;
549 virtual std::string packageInfo(std::vector<std::string>
const& package_filepaths=std::vector<std::string>()) = 0;
552 SWIGOUT(%kwargs _openViewerHandleCodeGenDialog;)
553 virtual void _openViewerHandleCodeGenDialog(
557 SWIGOUT(%newobject sharedAssetGalleryDataSource;)
559 virtual void setSharedAssetGalleryDataSource(
561 const char *gallery_name)
563 virtual void reloadSharedAssetGalleryDataSource(
const char *gallery_name) = 0;
564 virtual std::vector<HOM_ElemPtr<HOM_Tool>> _toolsWithFilter(
const char *
filter) = 0;
569 SWIGOUT(%kwargs _selectNodeData;)
570 std::vector<std::string> _selectNodeData(
571 const char *title = NULL,
572 const char *message = NULL,
575 const std::vector<std::string> &
576 initial_selection = std::vector<std::string>(),
578 bool multiple_select =
false,
579 bool include_data_type_headers =
true,
580 bool include_parms=
true,
581 bool include_object_transforms=
true,
582 bool include_geometry_bounding_boxes=
true,
583 bool include_geometry_attributes=
true,
584 bool expand_components=
true,
585 InterpreterObject custom_data_callback=
nullptr,
586 InterpreterObject custom_node_filter_callback=
nullptr,
587 const char *help_url=
nullptr)
589 if (custom_data_callback && custom_data_callback == Py_None)
590 custom_data_callback =
nullptr;
592 if (custom_node_filter_callback && custom_node_filter_callback == Py_None)
593 custom_node_filter_callback =
nullptr;
595 return self->_selectNodeDataInternal(
603 include_data_type_headers,
605 include_object_transforms,
606 include_geometry_bounding_boxes,
607 include_geometry_attributes,
609 custom_data_callback,
610 custom_node_filter_callback,
616 std::vector<std::string> _selectNode(
620 const char *title = NULL,
623 bool multiple_select =
false,
624 InterpreterObject custom_node_filter_callback =
nullptr)
626 if (custom_node_filter_callback && custom_node_filter_callback == Py_None)
627 custom_node_filter_callback =
nullptr;
629 return self->_selectNodeInternal(
637 custom_node_filter_callback
642 SWIGOUT(%kwargs selectMultipleNodes;)
643 std::vector<std::string> selectMultipleNodes(
647 const char *title = NULL,
650 InterpreterObject custom_node_filter_callback =
nullptr)
652 if (custom_node_filter_callback && custom_node_filter_callback == Py_None)
653 custom_node_filter_callback =
nullptr;
655 return self->_selectMultipleNodes(
662 custom_node_filter_callback
666 SWIGOUT(%kwargs openBookmarkEditor;)
668 {
self->_openBookmarkEditor(bookmark); }
670 SWIGOUT(%kwargs openColorEditor;)
671 void openColorEditor(
672 InterpreterObject color_changed_callback,
673 bool include_alpha=
false,
675 float initial_alpha=1.0
f,
676 std::map<std::string, hboost::any>
const& options =
677 std::map<std::string, hboost::any>()
680 self->_openColorEditor(
681 color_changed_callback,
688 SWIGOUT(%kwargs openColorEditor;)
689 void openRawColorEditor(
690 InterpreterObject color_changed_callback,
691 bool include_alpha=
false,
693 float initial_alpha=1.0
f
696 std::map<std::string, hboost::any> options;
697 options[
"ocio_pick_raw"] =
true;
698 options[
"ocio_show_info"] =
false;
699 options[
"apply_color_correction"] =
false;
701 self->_openColorEditor(
702 color_changed_callback,
709 SWIGOUT(%kwargs openValueLadder;)
710 void openValueLadder(
712 InterpreterObject value_changed_callback,
715 {
self->_openValueLadder(
716 initial_value, value_changed_callback,
type, data_type); }
718 void addEventLoopCallback(InterpreterObject callback)
719 {
self->addOpaqueEventLoopCallback(callback); }
721 void removeEventLoopCallback(InterpreterObject callback)
722 {
self->removeOpaqueEventLoopCallback(callback); }
724 void postEventCallback(InterpreterObject callback)
725 {
self->postOpaqueEventCallback(callback); }
726 void removePostedEventCallback(InterpreterObject callback)
727 {
self->removePostedOpaqueEventCallback(callback); }
731 std::vector<InterpreterObject> eventLoopCallbacks()
733 std::vector<void *> opaque_callbacks(self->opaqueEventLoopCallbacks());
735 std::vector<InterpreterObject> callbacks;
736 for (
int i=0; i< opaque_callbacks.size(); ++i)
737 callbacks.push_back((InterpreterObject)opaque_callbacks[i]);
741 void waitUntil(InterpreterObject callback)
742 {
self->opaqueWaitUntil(callback); }
744 void addTriggerUpdateCallback(InterpreterObject callback)
745 {
self->addOpaqueTriggerUpdateCallback(callback); }
747 void removeTriggerUpdateCallback(InterpreterObject callback)
748 {
self->removeOpaqueTriggerUpdateCallback(callback); }
750 void addSelectionCallback(InterpreterObject callback)
751 {
self->addOpaqueSelectionCallback(callback); }
753 void removeSelectionCallback(InterpreterObject callback)
754 {
self->removeOpaqueSelectionCallback(callback); }
756 std::vector<InterpreterObject> selectionCallbacks()
758 std::vector<void *> opaque_callbacks =
self->opaqueSelectionCallbacks();
759 std::vector<InterpreterObject> callbacks;
761 for (
int i = 0,
n = opaque_callbacks.size(); i <
n; i++)
762 callbacks.push_back((InterpreterObject)opaque_callbacks[i]);
768 void addResourceEventCallback(InterpreterObject callback)
770 self->addOpaqueResourceEventCallback(callback);
773 void removeResourceEventCallback(InterpreterObject callback)
775 self->removeOpaqueResourceEventCallback(callback);
778 SWIGOUT(%kwargs openFileEditor;)
780 std::string
const & title,
781 std::string
const & file_path,
782 InterpreterObject action_callback =
nullptr,
783 std::map<std::string, hboost::any>
const&
params =
784 std::map<std::string, hboost::any>() )
786 self->_openFileEditor(title, file_path, action_callback,
params);
789 SWIGOUT(%kwargs openViewerStateCodeGenDialog;)
790 void openViewerStateCodeGenDialog(
792 InterpreterObject action_callback,
793 std::string
const & op_name = std::string())
795 self->_openViewerStateCodeGenDialog(category, action_callback, op_name);
798 SWIGOUT(%kwargs openViewerHandleCodeGenDialog;)
799 void openViewerHandleCodeGenDialog(
801 InterpreterObject action_callback )
803 self->_openViewerHandleCodeGenDialog(category, action_callback);
GLuint GLsizei const GLchar * message
GT_API const UT_StringHolder filename
GLuint GLsizei const GLchar * label
string __repr__(VtArray< T > const &self)
PUGI__FN void sort(I begin, I end, const Pred &pred)
GLint GLint GLsizei GLint GLenum GLenum const void * pixels
std::tuple< Types...> UT_Tuple
std::string help(const App *app, const Error &e)
Printout the full help string on error (if this fn is set, the old default for CLI11) ...
GLenum const GLfloat * params
GLint GLsizei GLsizei height
GLint GLint GLsizei GLint GLenum GLenum type
void ignore(T const &) VULKAN_HPP_NOEXCEPT
HOM_Color * selectRawColor(HOM_Color *initial_color=NULL)
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
GLuint const GLchar * name
hboost::any HOM_DDSourceAny
OIIO_UTIL_API bool rename(string_view from, string_view to, std::string &err)
GLenum GLenum GLsizei void * row
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter