41 static const char*
const s_defaultTitle =
"Anonymous window";
42 static const Vec2i s_defaultSize =
Vec2i(1024, 768);
43 static bool s_defaultFullScreen =
false;
44 static const char*
const s_windowClassName =
"FrameworkWindowClass";
48 bool Window::s_inited =
false;
50 bool Window::s_ignoreRepaint =
false;
55 : m_glConfigDirty (false),
60 m_enablePaste (false),
62 m_title (s_defaultTitle),
63 m_isFullScreen (false),
66 m_pendingKeyFlush (false),
90 s_open->removeItem(
this);
100 SetWindowText(m_hwnd, title.
getPtr());
112 m_pendingSize =
size;
121 AdjustWindowRect(&rc, GetWindowLong(m_hwnd, GWL_STYLE), (GetMenu(m_hwnd) !=
NULL));
123 SetWindowPos(m_hwnd,
NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top,
124 SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOZORDER);
132 GetClientRect(m_hwnd, &rect);
133 return Vec2i(rect.right, rect.bottom);
140 if (m_isRealized && m_isVisible != visible)
141 ShowWindow(m_hwnd, (visible) ? SW_SHOW : SW_HIDE);
142 m_isVisible = visible;
149 if (m_isFullScreen == isFull)
152 m_isFullScreen = isFull;
156 m_origStyle = GetWindowLong(m_hwnd, GWL_STYLE);
157 GetWindowRect(m_hwnd, &m_origRect);
158 GetWindowRect(GetDesktopWindow(), &desk);
159 setWindowLong(m_hwnd, GWL_STYLE, (m_origStyle & ~WS_OVERLAPPEDWINDOW) | WS_POPUP);
160 SetWindowPos(m_hwnd, HWND_TOP,
161 desk.left, desk.top, desk.right - desk.left, desk.bottom - desk.top,
162 SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOZORDER);
167 SetWindowPos(m_hwnd,
NULL,
170 m_origRect.right - m_origRect.left,
171 m_origRect.bottom - m_origRect.top,
172 SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOZORDER);
174 if (m_pendingSize.x != -1)
188 ShowWindow(m_hwnd, (m_isVisible) ? SW_SHOW : SW_HIDE);
218 InvalidateRect(m_hwnd,
NULL,
false);
227 s_ignoreRepaint =
true;
231 m_glConfigDirty =
false;
236 if (size.x > 0 && size.y > 0)
241 s_ignoreRepaint =
false;
242 if (m_prevSize != size)
250 s_ignoreRepaint =
true;
256 s_ignoreRepaint =
false;
263 PostMessage(m_hwnd, WM_CLOSE, 0, 0);
270 DragAcceptFiles(m_hwnd, enable);
277 m_enablePaste = enable;
284 if (!listener || m_listeners.contains(listener))
287 m_listeners.add(listener);
295 if (!m_listeners.contains(listener))
298 m_listeners.removeItem(listener);
306 while (m_listeners.getSize())
315 MessageBox(m_hwnd, text.
getPtr(), title.
getPtr(), MB_OK);
332 int colon = filters.
indexOf(
':', start);
334 int comma = filters.
indexOf(
',', colon);
340 while (start < colon)
342 int semi = filters.
indexOf(
';', start);
343 if (semi == -1 || semi > colon)
364 if (numFilters > 1 && !save)
367 for (
int i = 0; i < extensions.
getSize(); i++)
372 all += extensions[i];
374 filterStr =
sprintf(
"All Supported Formats (%s)\n%s\n", all.
getPtr(), all.
getPtr()) + filterStr;
376 filterStr +=
"All Files (*.*)\n*.*\n";
381 for (
int i = 0; i < filterChars.getSize(); i++)
382 if (filterChars[i] ==
'\n')
383 filterChars[i] =
'\0';
387 char rawPath[MAX_PATH];
392 flags = OFN_CREATEPROMPT | OFN_NOCHANGEDIR | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
394 flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
397 ofn.lStructSize =
sizeof(ofn);
398 ofn.hwndOwner = m_hwnd;
399 ofn.hInstance =
NULL;
400 ofn.lpstrFilter = filterChars.getPtr();
401 ofn.lpstrCustomFilter =
NULL;
402 ofn.nMaxCustFilter = 0;
403 ofn.nFilterIndex = 0;
404 ofn.lpstrFile = rawPath;
406 ofn.lpstrFileTitle =
NULL;
407 ofn.nMaxFileTitle = 0;
408 ofn.lpstrInitialDir = (initialDir.
getLength() && forceInitialDir) ? initialDir.
getPtr() :
NULL;
409 ofn.lpstrTitle = title.
getPtr();
412 ofn.nFileExtension = 0;
413 ofn.lpstrDefExt = (extensions.
getSize()) ? extensions[0].getPtr() :
NULL;
414 ofn.lCustData =
NULL;
416 ofn.lpTemplateName =
NULL;
417 ofn.pvReserved =
NULL;
423 char oldCwd[MAX_PATH];
424 bool oldCwdValid = (GetCurrentDirectory(
FW_ARRAY_SIZE(oldCwd), oldCwd) != 0);
425 if (oldCwdValid && initialDir.
getLength() && !forceInitialDir)
426 SetCurrentDirectory(initialDir.
getPtr());
431 bool rawPathValid = (((save) ? GetSaveFileName(&ofn) : GetOpenFileName(&ofn)) != 0);
437 char absolutePath[MAX_PATH];
438 bool absolutePathValid = (rawPathValid && GetFullPathName(rawPath,
FW_ARRAY_SIZE(absolutePath), absolutePath,
NULL) != 0);
440 SetCurrentDirectory(oldCwd);
444 char relativePath[MAX_PATH];
445 bool relativePathValid = (oldCwdValid && absolutePathValid &&
446 PathRelativePathTo(relativePath, oldCwd, FILE_ATTRIBUTE_DIRECTORY, (absolutePathValid) ? absolutePath : rawPath, 0));
450 return (relativePathValid) ? relativePath : (absolutePathValid) ? absolutePath : (rawPathValid) ? rawPath :
"";
457 char rawPath[MAX_PATH];
461 LPITEMIDLIST pidl =
NULL;
462 BROWSEINFO bi = { 0 };
464 bi.hwndOwner = m_hwnd;
465 bi.pszDisplayName = rawPath;
467 bi.lpszTitle = title.
getPtr();
468 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
471 if((pidl = SHBrowseForFolder(&bi)) !=
NULL)
473 SHGetPathFromIDList(pidl, rawPath);
489 if (!m_isRealized || !m_isVisible)
493 for (
int i = 0; i < 3; i++)
512 wc.lpfnWndProc = DefWindowProc;
515 wc.hInstance = (HINSTANCE)GetModuleHandle(
NULL);
516 wc.hIcon = LoadIcon(wc.hInstance, MAKEINTRESOURCE(101));
517 wc.hCursor = LoadCursor(
NULL, IDC_ARROW);
518 wc.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));
519 wc.lpszMenuName =
NULL;
520 wc.lpszClassName = s_windowClassName;
523 wc.hIcon = LoadIcon(
NULL, IDI_APPLICATION);
542 while (s_open->getSize())
543 delete s_open->getLast();
555 HWND hwnd = CreateWindow(
562 (HINSTANCE)GetModuleHandle(
NULL),
576 return (
UPTR)SetWindowLongPtr(hwnd, idx, (LONG_PTR)value);
578 return (
UPTR)SetWindowLong(hwnd, idx, (LONG)value);
587 for (
int i = 0; i < s_open->getSize(); i++)
588 s_open->get(i)->realize();
598 while (PeekMessage(&msg,
NULL, 0, 0, PM_REMOVE))
600 TranslateMessage(&msg);
601 DispatchMessage(&msg);
616 char start[MAX_PATH + 1];
617 char dir[MAX_PATH + 1];
619 strcpy_s(start, root);
620 strcat_s(start,
"/*");
622 for(h = FindFirstFile(start, &fd), ok = 1; h != INVALID_HANDLE_VALUE && ok; ok = FindNextFile(h, &fd))
624 if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
626 strcpy_s(dir, fd.cFileName);
627 if((strcmp(dir,
".") != 0) && (strcmp(dir,
"..") != 0))
629 strcpy_s(start, root);
630 strcat_s(start,
"/");
631 strcat_s(start, dir);
640 strcpy_s(start, root);
641 strcat_s(start,
"/");
642 strcat_s(start, fd.cFileName);
648 error = GetLastError();
649 if(error != ERROR_NO_MORE_FILES)
652 if(h != INVALID_HANDLE_VALUE)
662 Event ev = createSimpleEvent(type);
663 for(
int idx = 0; ; idx++)
665 int len = DragQueryFile((HDROP)hDrop, idx, 0, 0);
668 char* buf =
new char[len+1];
669 DragQueryFile((HDROP)hDrop, idx, buf, len+1);
670 ev.files.add(
String(buf));
685 ev.mouseKnown = mouseKnown;
686 ev.mousePos = mousePos;
687 ev.mouseDelta = (mouseKnown && m_mouseKnown) ? mousePos - m_mousePos : 0;
696 void Window::postEvent(
const Event& ev)
698 m_mouseKnown = ev.mouseKnown;
699 m_mousePos = ev.mousePos;
706 for (
int i = m_listeners.getSize() - 1; i >= 0; i--)
707 if (
hasError() || m_listeners[i]->handleEvent(ev))
712 for (
int i = 0; i < m_listeners.getSize(); i++)
713 if (
hasError() || m_listeners[i]->handleEvent(ev))
725 void Window::create(
void)
728 m_hdc = GetDC(m_hwnd);
738 void Window::destroy(
void)
742 ReleaseDC(m_hwnd, m_hdc);
743 DestroyWindow(m_hwnd);
752 void Window::recreate(
void)
757 GetWindowRect(m_hwnd, &rect);
758 DWORD style = GetWindowLong(m_hwnd, GWL_STYLE);
767 SetWindowText(m_hwnd, m_title.
getPtr());
769 SetWindowPos(m_hwnd, HWND_TOP, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, 0);
771 ShowWindow(m_hwnd, (m_isVisible) ? SW_SHOW : SW_HIDE);
776 LRESULT CALLBACK Window::staticWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
779 Window* win = (
Window*)(LONG_PTR)GetWindowLongPtr(hWnd, GWLP_USERDATA);
780 LRESULT res = win->windowProc(uMsg, wParam, lParam);
787 LRESULT Window::windowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
791 if (m_mouseDragCount)
794 m_pendingKeyFlush =
true;
795 m_mouseKnown =
false;
796 m_mouseDragCount = 0;
802 m_pendingKeyFlush =
false;
803 for (
int slot = m_keysDown.firstSlot(); slot != -1; slot = m_keysDown.nextSlot(slot))
804 postEvent(createKeyEvent(
false, m_keysDown.getSlot(slot)));
808 if (uMsg == WM_ERASEBKGND)
811 if (uMsg == WM_PAINT)
814 BeginPaint(m_hwnd, &paint);
815 EndPaint(m_hwnd, &paint);
821 return DefWindowProc(m_hwnd, uMsg, wParam, lParam);
836 if (m_enablePaste && uMsg == WM_KEYDOWN)
838 if ((wParam ==
'V' && GetKeyState(VK_CONTROL) < 0) ||
839 (wParam == VK_INSERT && GetKeyState(VK_SHIFT) < 0))
841 if (OpenClipboard(m_hwnd))
843 if (IsClipboardFormatAvailable(CF_HDROP))
847 else if (IsClipboardFormatAvailable(CF_DIB))
849 BITMAPINFO* bminfo = (BITMAPINFO*)GetClipboardData(CF_DIB);
850 BITMAPINFOHEADER& hdr = bminfo->bmiHeader;
852 bool flip = (
size.y < 0);
855 U8*
p = (
U8*)bminfo->bmiColors;
857 if (hdr.biCompression == 0)
859 if (hdr.biBitCount == 24)
864 for (
int x=0;
x <
size.x;
x++, p += 3)
865 img->setABGR(
Vec2i(
x, flip ?
y : (
size.y -
y - 1)), (p[0] << 16) | (p[1] << 8) | p[2] | 0xff000000u);
866 }
else if (hdr.biBitCount == 32)
871 for (
int x=0;
x <
size.x;
x++, p += 4)
872 img->setABGR(
Vec2i(
x, flip ?
y : (
size.y -
y - 1)), (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
890 bool down = (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN);
894 postEvent(createKeyEvent(down, key));
895 if (down && !m_keysDown.contains(key))
897 else if (!down && m_keysDown.contains(key))
898 m_keysDown.remove(key);
904 GetKeyboardState(keyState);
909 (((
U32)lParam >> 16) & 0xff) | ((down) ? 0 : 0x8000),
915 for (
int i = 0; i < num; i++)
916 postEvent(createCharEvent(buf[i]));
924 TRACKMOUSEEVENT track;
925 track.cbSize =
sizeof(TRACKMOUSEEVENT);
926 track.dwFlags = TME_LEAVE;
927 track.hwndTrack = m_hwnd;
928 track.dwHoverTime = HOVER_DEFAULT;
929 TrackMouseEvent(&track);
933 postEvent(createMouseEvent(
true,
Vec2i((
short)LOWORD(lParam), (
short)HIWORD(lParam))));
938 if (!m_mouseDragCount)
939 postEvent(createMouseEvent(
false, 0));
966 if (down && !m_keysDown.contains(key))
969 if (!m_mouseDragCount)
973 else if (!down && m_keysDown.contains(key))
975 m_keysDown.remove(key);
977 if (!m_mouseDragCount)
983 postEvent(createKeyEvent(down, key));
988 m_mouseWheelAcc += (short)HIWORD(wParam);
989 while (m_mouseWheelAcc >= 120)
993 m_mouseWheelAcc -= 120;
995 while (m_mouseWheelAcc <= -120)
999 m_mouseWheelAcc += 120;
1011 return DefWindowProc(m_hwnd, uMsg, wParam, lParam);
static UPTR setWindowLong(HWND hwnd, int idx, UPTR value)
String showFileDialog(const String &title, bool save, const String &filters="", const String &initialDir="", bool forceInitialDir=false)
#define FW_KEY_MOUSE_RIGHT
void enableDrop(bool enable)
String substring(int start, int end) const
bool endsWith(const String &str) const
const char * getPtr(void) const
int indexOf(char chr) const
static void staticDeinit(void)
void addListener(Listener *listener)
void failWin32Error(const char *funcName)
bool getDiscardEvents(void)
String vkeyToKey(U32 vkey)
Vec2i getSize(void) const
const Config & getConfig(void) const
String toLower(void) const
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value CUfunction int CUtexref hTexRef CUfunction int int grid_height CUevent unsigned int Flags CUevent hEvent CUevent hEvent CUstream unsigned int Flags CUstream hStream GLuint bufferobj unsigned int CUdevice dev CUdeviceptr unsigned int CUmodule const char name CUdeviceptr unsigned int bytesize CUdeviceptr dptr void unsigned int bytesize void CUdeviceptr unsigned int ByteCount CUarray unsigned int CUdeviceptr unsigned int ByteCount CUarray unsigned int const void unsigned int ByteCount CUarray unsigned int CUarray unsigned int unsigned int ByteCount void CUarray unsigned int unsigned int CUstream hStream const CUDA_MEMCPY2D pCopy CUdeviceptr const void unsigned int CUstream hStream const CUDA_MEMCPY2D CUstream hStream CUdeviceptr unsigned char unsigned int N CUdeviceptr unsigned int unsigned int N CUdeviceptr unsigned int unsigned short unsigned int unsigned int Height CUarray const CUDA_ARRAY_DESCRIPTOR pAllocateArray CUarray const CUDA_ARRAY3D_DESCRIPTOR pAllocateArray unsigned int CUtexref CUdeviceptr unsigned int bytes CUcontext unsigned int CUdevice device GLenum texture GLenum GLuint buffer GLenum GLuint renderbuffer GLenum GLsizeiptr const GLvoid GLenum usage GLuint shader GLenum type GLsizei const GLuint framebuffers GLsizei const GLuint renderbuffers GLuint v GLuint v GLenum GLenum GLenum GLuint GLint level GLsizei GLuint framebuffers GLuint const GLchar name GLenum GLintptr GLsizeiptr GLvoid data GLuint GLenum GLint param GLuint GLenum GLint param GLhandleARB programObj GLenum GLenum GLsizei GLsizei height GLenum GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid pixels GLint GLsizei const GLfloat value GLint GLfloat GLfloat v1 GLint GLfloat GLfloat GLfloat v2 GLint GLsizei const GLfloat value GLint GLsizei GLboolean const GLfloat value GLuint program GLuint GLfloat x
#define FW_KEY_WHEEL_DOWN
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value CUfunction int CUtexref hTexRef CUfunction int int grid_height CUevent unsigned int Flags CUevent hEvent CUevent hEvent CUstream unsigned int Flags CUstream hStream GLuint bufferobj unsigned int CUdevice dev CUdeviceptr unsigned int CUmodule const char name CUdeviceptr unsigned int bytesize CUdeviceptr dptr void unsigned int bytesize void CUdeviceptr unsigned int ByteCount CUarray unsigned int CUdeviceptr unsigned int ByteCount CUarray unsigned int const void unsigned int ByteCount CUarray unsigned int CUarray unsigned int unsigned int ByteCount void CUarray unsigned int unsigned int CUstream hStream const CUDA_MEMCPY2D pCopy CUdeviceptr const void unsigned int CUstream hStream const CUDA_MEMCPY2D CUstream hStream CUdeviceptr unsigned char unsigned int N CUdeviceptr unsigned int unsigned int N CUdeviceptr unsigned int unsigned short unsigned int unsigned int Height CUarray const CUDA_ARRAY_DESCRIPTOR pAllocateArray CUarray const CUDA_ARRAY3D_DESCRIPTOR pAllocateArray unsigned int CUtexref CUdeviceptr unsigned int bytes CUcontext unsigned int CUdevice device GLenum texture GLenum GLuint buffer GLenum GLuint renderbuffer GLenum GLsizeiptr const GLvoid GLenum usage GLuint shader GLenum type GLsizei const GLuint framebuffers GLsizei const GLuint renderbuffers GLuint v GLuint v GLenum GLenum GLenum GLuint GLint level GLsizei GLuint framebuffers GLuint const GLchar name GLenum GLintptr GLsizeiptr GLvoid data GLuint GLenum GLint param GLuint GLenum GLint param GLhandleARB programObj GLenum GLenum GLsizei GLsizei height GLenum GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid pixels GLint GLsizei const GLfloat value GLint GLfloat GLfloat v1 GLint GLfloat GLfloat GLfloat v2 GLint GLsizei const GLfloat value GLint GLsizei GLboolean const GLfloat value GLuint program GLuint GLfloat GLfloat y
void removeListener(Listener *listener)
virtual bool handleEvent(const Event &ev)=0
void showModalMessage(const String &msg)
bool setDiscardEvents(bool discard)
void setVisible(bool visible)
#define FW_KEY_MOUSE_MIDDLE
bool isMouseDragging(void) const
S32 keyToUnicode(const String &key)
int getLength(void) const
void setSize(const Vec2i &size)
int incNestingLevel(int delta)
String sprintf(const char *fmt,...)
CUdevice int ordinal char int len
void removeListeners(void)
static void traverseDirectory(const char *root, Array< String > &names)
void showMessageDialog(const String &title, const String &text)
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value
static void pollMessages(void)
void setView(const Vec2i &pos, const Vec2i &size)
void setGLConfig(const GLContext::Config &config)
String & appendf(const char *fmt,...)
static HWND createHWND(void)
static void staticInit(void)
#define FW_KEY_MOUSE_LEFT
Array< String > showDirLoadDialog(const String &title, const String &initialDir="")
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void * p
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value CUfunction int CUtexref hTexRef CUfunction int int grid_height CUevent unsigned int Flags CUevent hEvent CUevent hEvent CUstream unsigned int Flags CUstream hStream GLuint bufferobj unsigned int CUdevice dev CUdeviceptr unsigned int CUmodule const char name CUdeviceptr unsigned int bytesize CUdeviceptr dptr void unsigned int bytesize void CUdeviceptr unsigned int ByteCount CUarray unsigned int CUdeviceptr unsigned int ByteCount CUarray unsigned int const void unsigned int ByteCount CUarray unsigned int CUarray unsigned int unsigned int ByteCount void CUarray unsigned int unsigned int CUstream hStream const CUDA_MEMCPY2D pCopy CUdeviceptr const void unsigned int CUstream hStream const CUDA_MEMCPY2D CUstream hStream CUdeviceptr unsigned char unsigned int N CUdeviceptr unsigned int unsigned int N CUdeviceptr unsigned int unsigned short unsigned int unsigned int Height CUarray const CUDA_ARRAY_DESCRIPTOR pAllocateArray CUarray const CUDA_ARRAY3D_DESCRIPTOR pAllocateArray unsigned int CUtexref CUdeviceptr unsigned int bytes CUcontext unsigned int CUdevice device GLenum texture GLenum GLuint buffer GLenum GLuint renderbuffer GLenum GLsizeiptr const GLvoid GLenum usage GLuint shader GLenum type
void setTitle(const String &title)
void setFullScreen(bool isFull)
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value CUfunction int CUtexref hTexRef CUfunction int int grid_height CUevent unsigned int Flags CUevent hEvent CUevent hEvent CUstream unsigned int Flags CUstream hStream GLuint bufferobj unsigned int CUdevice dev CUdeviceptr unsigned int CUmodule const char name CUdeviceptr unsigned int bytesize CUdeviceptr dptr void unsigned int bytesize void CUdeviceptr unsigned int ByteCount CUarray unsigned int CUdeviceptr unsigned int ByteCount CUarray unsigned int const void unsigned int ByteCount CUarray unsigned int CUarray unsigned int unsigned int ByteCount void CUarray unsigned int unsigned int CUstream hStream const CUDA_MEMCPY2D pCopy CUdeviceptr const void unsigned int CUstream hStream const CUDA_MEMCPY2D CUstream hStream CUdeviceptr unsigned char unsigned int N CUdeviceptr unsigned int unsigned int N CUdeviceptr unsigned int unsigned short unsigned int unsigned int Height CUarray const CUDA_ARRAY_DESCRIPTOR pAllocateArray CUarray const CUDA_ARRAY3D_DESCRIPTOR pAllocateArray unsigned int CUtexref CUdeviceptr unsigned int bytes CUcontext unsigned int CUdevice device GLenum texture GLenum GLuint buffer GLenum GLuint renderbuffer GLenum GLsizeiptr size
void enablePaste(bool enable)
static void realizeAll(void)
void drawModalMessage(const String &msg)