Blender  V3.3
Public Member Functions | Public Attributes | List of all members
GHOST_WindowWin32 Class Reference

#include <GHOST_WindowWin32.h>

Inheritance diagram for GHOST_WindowWin32:
GHOST_Window GHOST_IWindow

Public Member Functions

 GHOST_WindowWin32 (GHOST_SystemWin32 *system, const char *title, int32_t left, int32_t top, uint32_t width, uint32_t height, GHOST_TWindowState state, GHOST_TDrawingContextType type=GHOST_kDrawingContextTypeNone, bool wantStereoVisual=false, bool alphaBackground=false, GHOST_WindowWin32 *parentWindow=0, bool is_debug=false, bool dialog=false)
 
 ~GHOST_WindowWin32 ()
 
void adjustWindowRectForClosestMonitor (LPRECT win_rect, DWORD dwStyle, DWORD dwExStyle)
 
bool getValid () const
 
HWND getHWND () const
 
void setTitle (const char *title)
 
std::string getTitle () const
 
void getWindowBounds (GHOST_Rect &bounds) const
 
void getClientBounds (GHOST_Rect &bounds) const
 
GHOST_TSuccess setClientWidth (uint32_t width)
 
GHOST_TSuccess setClientHeight (uint32_t height)
 
GHOST_TSuccess setClientSize (uint32_t width, uint32_t height)
 
GHOST_TWindowState getState () const
 
void screenToClient (int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const
 
void clientToScreen (int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const
 
GHOST_TSuccess setState (GHOST_TWindowState state)
 
GHOST_TSuccess setOrder (GHOST_TWindowOrder order)
 
GHOST_TSuccess invalidate ()
 
GHOST_TSuccess setProgressBar (float progress)
 
GHOST_TSuccess endProgressBar ()
 
void updateMouseCapture (GHOST_MouseCaptureEventWin32 event)
 
void lostMouseCapture ()
 
bool isDialog () const
 
HCURSOR getStandardCursor (GHOST_TStandardCursor shape) const
 
void loadCursor (bool visible, GHOST_TStandardCursor cursorShape) const
 
bool usingTabletAPI (GHOST_TTabletAPI api) const
 
GHOST_TSuccess getPointerInfo (std::vector< GHOST_PointerInfoWin32 > &outPointerInfo, WPARAM wParam, LPARAM lParam)
 
void resetPointerPenInfo ()
 
GHOST_WintabgetWintab () const
 
void loadWintab (bool enable)
 
void closeWintab ()
 
GHOST_TabletData getTabletData ()
 
GHOST_TSuccess beginFullScreen () const
 
GHOST_TSuccess endFullScreen () const
 
void updateDPI ()
 
uint16_t getDPIHint () override
 
void ThemeRefresh ()
 
void updateDirectManipulation ()
 
void onPointerHitTest (WPARAM wParam)
 
GHOST_TTrackpadInfo getTrackpadInfo ()
 
- Public Member Functions inherited from GHOST_Window
 GHOST_Window (uint32_t width, uint32_t height, GHOST_TWindowState state, const bool wantStereoVisual=false, const bool exclusive=false)
 
virtual ~GHOST_Window ()
 
virtual voidgetOSWindow () const
 
GHOST_TStandardCursor getCursorShape () const
 
GHOST_TSuccess setCursorShape (GHOST_TStandardCursor cursorShape)
 
GHOST_TSuccess setCustomCursorShape (uint8_t *bitmap, uint8_t *mask, int sizex, int sizey, int hotX, int hotY, bool canInvertColor)
 
GHOST_TSuccess getCursorBitmap (GHOST_CursorBitmapRef *bitmap)
 
bool getCursorVisibility () const
 
GHOST_TGrabCursorMode getCursorGrabMode () const
 
bool getCursorGrabModeIsWarp () const
 
GHOST_TAxisFlag getCursorGrabAxis () const
 
void getCursorGrabInitPos (int32_t &x, int32_t &y) const
 
void getCursorGrabAccum (int32_t &x, int32_t &y) const
 
void setCursorGrabAccum (int32_t x, int32_t y)
 
GHOST_TSuccess setCursorVisibility (bool visible)
 
GHOST_TSuccess setCursorGrab (GHOST_TGrabCursorMode mode, GHOST_TAxisFlag wrap_axis, GHOST_Rect *bounds, int32_t mouse_ungrab_xy[2])
 
GHOST_TSuccess getCursorGrabBounds (GHOST_Rect &bounds)
 
void getCursorGrabState (GHOST_TGrabCursorMode &mode, GHOST_TAxisFlag &axis_flag, GHOST_Rect &bounds, bool &use_software_cursor)
 
bool getCursorGrabUseSoftwareDisplay ()
 
GHOST_TSuccess setSwapInterval (int interval)
 
GHOST_TSuccess getSwapInterval (int &intervalOut)
 
void setAcceptDragOperation (bool canAccept)
 
bool canAcceptDragOperation () const
 
virtual GHOST_TSuccess setModifiedState (bool isUnsavedChanges)
 
virtual bool getModifiedState ()
 
GHOST_TDrawingContextType getDrawingContextType ()
 
GHOST_TSuccess setDrawingContextType (GHOST_TDrawingContextType type)
 
virtual GHOST_TSuccess swapBuffers ()
 
virtual GHOST_TSuccess activateDrawingContext ()
 
GHOST_TSuccess updateDrawingContext ()
 
virtual unsigned int getDefaultFramebuffer ()
 
GHOST_TUserDataPtr getUserData () const
 
void setUserData (const GHOST_TUserDataPtr userData)
 
float getNativePixelSize (void)
 
- Public Member Functions inherited from GHOST_IWindow
virtual ~GHOST_IWindow ()
 

Public Attributes

bool m_mousePresent
 
bool m_inLiveResize
 

Additional Inherited Members

- Protected Member Functions inherited from GHOST_Window
GHOST_TSuccess releaseNativeHandles ()
 
- Protected Attributes inherited from GHOST_Window
GHOST_TDrawingContextType m_drawingContextType
 
GHOST_TUserDataPtr m_userData
 
bool m_cursorVisible
 
GHOST_TGrabCursorMode m_cursorGrab
 
GHOST_TAxisFlag m_cursorGrabAxis
 
int32_t m_cursorGrabInitPos [2]
 
int32_t m_cursorGrabAccumPos [2]
 
GHOST_Rect m_cursorGrabBounds
 
GHOST_TStandardCursor m_cursorShape
 
bool m_progressBarVisible
 
bool m_canAcceptDragOperation
 
bool m_isUnsavedChanges
 
bool m_fullScreen
 
bool m_wantStereoVisual
 
uint32_t m_fullScreenWidth
 
uint32_t m_fullScreenHeight
 
float m_nativePixelSize
 

Detailed Description

GHOST window on MS Windows OSs.

Definition at line 53 of file GHOST_WindowWin32.h.

Constructor & Destructor Documentation

◆ GHOST_WindowWin32()

GHOST_WindowWin32::GHOST_WindowWin32 ( GHOST_SystemWin32 system,
const char *  title,
int32_t  left,
int32_t  top,
uint32_t  width,
uint32_t  height,
GHOST_TWindowState  state,
GHOST_TDrawingContextType  type = GHOST_kDrawingContextTypeNone,
bool  wantStereoVisual = false,
bool  alphaBackground = false,
GHOST_WindowWin32 parentWindow = 0,
bool  is_debug = false,
bool  dialog = false 
)

Constructor. Creates a new window and opens it. To check if the window was created properly, use the getValid() method.

Parameters
titleThe text shown in the title bar of the window.
leftThe coordinate of the left edge of the window.
topThe coordinate of the top edge of the window.
widthThe width the window.
heightThe height the window.
stateThe state the window is initially opened with.
typeThe type of drawing context installed in this window.
wantStereoVisualStereo visual for quad buffered stereo.
parentWindowHwndTODO.

Definition at line 39 of file GHOST_WindowWin32.cpp.

References adjustWindowRectForClosestMonitor(), alloc_utf16_from_8(), CLSID_TaskbarList, GHOST_DirectManipulationHelper::create(), free(), getDPIHint(), GHOST_System::getTabletAPI(), GHOST_kTabletWinPointer, GHOST_kWindowStateFullScreen, GHOST_kWindowStateMaximized, GHOST_kWindowStateMinimized, GHOST_kWindowStateNormal, height, left, loadWintab(), lostMouseCapture(), GHOST_System::m_windowFocus, NULL, GHOST_Window::setDrawingContextType(), state, ThemeRefresh(), top, type, and width.

◆ ~GHOST_WindowWin32()

GHOST_WindowWin32::~GHOST_WindowWin32 ( )

Member Function Documentation

◆ adjustWindowRectForClosestMonitor()

void GHOST_WindowWin32::adjustWindowRectForClosestMonitor ( LPRECT  win_rect,
DWORD  dwStyle,
DWORD  dwExStyle 
)

Adjusts a requested window rect to fit and position correctly in monitor.

Parameters
win_rectpointer to rectangle that will be modified.
dwStyleThe Window Style of the window whose required size is to be calculated.
dwExStyleThe Extended Window Style of the window.

Definition at line 298 of file GHOST_WindowWin32.cpp.

References FALSE, height, max, min, UINT(), and width.

Referenced by GHOST_WindowWin32().

◆ beginFullScreen()

GHOST_TSuccess GHOST_WindowWin32::beginFullScreen ( ) const
inlinevirtual

Implements GHOST_IWindow.

Definition at line 280 of file GHOST_WindowWin32.h.

References GHOST_kFailure.

◆ clientToScreen()

void GHOST_WindowWin32::clientToScreen ( int32_t  inX,
int32_t  inY,
int32_t outX,
int32_t outY 
) const
virtual

Converts a point in client rectangle coordinates to screen coordinates.

Parameters
inXThe x-coordinate in the client rectangle.
inYThe y-coordinate in the client rectangle.
outXThe x-coordinate on the screen.
outYThe y-coordinate on the screen.

Implements GHOST_IWindow.

Definition at line 486 of file GHOST_WindowWin32.cpp.

References Freestyle::Nature::POINT, and point.

◆ closeWintab()

void GHOST_WindowWin32::closeWintab ( )

Closes Wintab for the window.

Definition at line 1024 of file GHOST_WindowWin32.cpp.

References NULL, and WINTAB_PRINTF.

Referenced by GHOST_SystemWin32::setTabletAPI(), and ~GHOST_WindowWin32().

◆ endFullScreen()

GHOST_TSuccess GHOST_WindowWin32::endFullScreen ( void  ) const
inlinevirtual

Implements GHOST_IWindow.

Definition at line 285 of file GHOST_WindowWin32.h.

References GHOST_kFailure.

◆ endProgressBar()

GHOST_TSuccess GHOST_WindowWin32::endProgressBar ( )
virtual

Hides the progress bar in the icon

Reimplemented from GHOST_Window.

Definition at line 1174 of file GHOST_WindowWin32.cpp.

References GHOST_kFailure, GHOST_kSuccess, ITaskbarList3::SetProgressState(), and TBPF_NOPROGRESS.

◆ getClientBounds()

void GHOST_WindowWin32::getClientBounds ( GHOST_Rect bounds) const
virtual

Returns the client rectangle dimensions. The left and top members of the rectangle are always zero.

Parameters
boundsThe bounding rectangle of the client area of the window.

Implements GHOST_IWindow.

Definition at line 377 of file GHOST_WindowWin32.cpp.

References bounds(), and Freestyle::Nature::POINT.

Referenced by loadWintab(), GHOST_SystemWin32::processCursorEvent(), setClientHeight(), setClientSize(), and setClientWidth().

◆ getDPIHint()

uint16_t GHOST_WindowWin32::getDPIHint ( )
overridevirtual

Returns the recommended DPI for this window.

Returns
The recommended DPI for this window.

Reimplemented from GHOST_Window.

Definition at line 1085 of file GHOST_WindowWin32.cpp.

Referenced by GHOST_WindowWin32(), and updateDPI().

◆ getHWND()

HWND GHOST_WindowWin32::getHWND ( ) const

Access to the handle of the window.

Returns
The handle of the window.

Definition at line 344 of file GHOST_WindowWin32.cpp.

Referenced by GHOST_DropTargetWin32::GHOST_DropTargetWin32(), GHOST_SystemWin32::processButtonEvent(), GHOST_SystemWin32::processWintabEvent(), and GHOST_SystemWin32::s_wndProc().

◆ getPointerInfo()

GHOST_TSuccess GHOST_WindowWin32::getPointerInfo ( std::vector< GHOST_PointerInfoWin32 > &  outPointerInfo,
WPARAM  wParam,
LPARAM  lParam 
)

Translate WM_POINTER events into GHOST_PointerInfoWin32 structs.

Parameters
outPointerInfoStorage to return resulting GHOST_PointerInfoWin32 structs.
wParamWPARAM of the event.
lParamLPARAM of the event.
Returns
True if #outPointerInfo was updated.

Definition at line 909 of file GHOST_WindowWin32.cpp.

References fabs(), GET_POINTERID_WPARAM, GHOST_ISystem::getSystem(), GHOST_kButtonMaskButton4, GHOST_kButtonMaskButton5, GHOST_kButtonMaskLeft, GHOST_kButtonMaskMiddle, GHOST_kButtonMaskRight, GHOST_kFailure, GHOST_kSuccess, GHOST_kTabletModeEraser, GHOST_kTabletModeStylus, NULL, and GHOST_SystemWin32::performanceCounterToMillis().

Referenced by GHOST_SystemWin32::processPointerEvent().

◆ getStandardCursor()

HCURSOR GHOST_WindowWin32::getStandardCursor ( GHOST_TStandardCursor  shape) const

◆ getState()

GHOST_TWindowState GHOST_WindowWin32::getState ( ) const
virtual

Returns the state of the window (normal, minimized, maximized).

Returns
The state of the window.

Implements GHOST_IWindow.

Definition at line 463 of file GHOST_WindowWin32.cpp.

References GHOST_kWindowStateFullScreen, GHOST_kWindowStateMaximized, GHOST_kWindowStateMinimized, GHOST_kWindowStateNormal, and result.

Referenced by GHOST_SystemWin32::s_wndProc(), setOrder(), setState(), and GHOST_SystemWin32::setTabletAPI().

◆ getTabletData()

GHOST_TabletData GHOST_WindowWin32::getTabletData ( )

Get the most recent Windows Pointer tablet data.

Returns
Most recent pointer tablet data.

Definition at line 1049 of file GHOST_WindowWin32.cpp.

References GHOST_Wintab::getLastTabletData(), GHOST_kTabletWintab, GHOST_TABLET_DATA_NONE, and usingTabletAPI().

Referenced by GHOST_SystemWin32::processButtonEvent(), GHOST_SystemWin32::processCursorEvent(), and GHOST_SystemWin32::s_wndProc().

◆ getTitle()

std::string GHOST_WindowWin32::getTitle ( ) const
virtual

Returns the title displayed in the title bar.

Returns
The title displayed in the title bar.

Implements GHOST_IWindow.

Definition at line 356 of file GHOST_WindowWin32.cpp.

References conv_utf_16_to_8(), count_utf_8_from_16(), and L.

◆ getTrackpadInfo()

GHOST_TTrackpadInfo GHOST_WindowWin32::getTrackpadInfo ( )

◆ getValid()

bool GHOST_WindowWin32::getValid ( ) const
virtual

Returns indication as to whether the window is valid.

Returns
The validity of the window.

Reimplemented from GHOST_Window.

Definition at line 339 of file GHOST_WindowWin32.cpp.

References GHOST_Window::getValid().

Referenced by GHOST_SystemWin32::createWindow().

◆ getWindowBounds()

void GHOST_WindowWin32::getWindowBounds ( GHOST_Rect bounds) const
virtual

Returns the window rectangle dimensions. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.

Parameters
boundsThe bounding rectangle of the window.

Implements GHOST_IWindow.

Definition at line 367 of file GHOST_WindowWin32.cpp.

References bounds().

Referenced by setClientHeight(), setClientSize(), and setClientWidth().

◆ getWintab()

GHOST_Wintab * GHOST_WindowWin32::getWintab ( ) const

Retrieves pointer to Wintab if Wintab is the set Tablet API.

Returns
Pointer to Wintab member.

Definition at line 995 of file GHOST_WindowWin32.cpp.

Referenced by GHOST_SystemWin32::processWintabEvent(), and GHOST_SystemWin32::s_wndProc().

◆ invalidate()

GHOST_TSuccess GHOST_WindowWin32::invalidate ( void  )
virtual

Invalidates the contents of this window.

Implements GHOST_IWindow.

Definition at line 566 of file GHOST_WindowWin32.cpp.

References FALSE, GHOST_kFailure, and GHOST_kSuccess.

◆ isDialog()

bool GHOST_WindowWin32::isDialog ( ) const
virtual

Reimplemented from GHOST_Window.

Definition at line 673 of file GHOST_WindowWin32.cpp.

◆ loadCursor()

void GHOST_WindowWin32::loadCursor ( bool  visible,
GHOST_TStandardCursor  cursorShape 
) const

◆ loadWintab()

void GHOST_WindowWin32::loadWintab ( bool  enable)

Loads Wintab context for the window.

Parameters
enableTrue if Wintab should be enabled after loading. Wintab should not be enabled if the window is minimized.

Definition at line 1000 of file GHOST_WindowWin32.cpp.

References GHOST_Wintab::enable(), GHOST_Wintab::gainFocus(), getClientBounds(), GHOST_SystemWin32::getCursorPosition(), GHOST_Rect::isInside(), GHOST_Wintab::loadWintab(), WINTAB_PRINTF, x, and y.

Referenced by GHOST_WindowWin32(), and GHOST_SystemWin32::setTabletAPI().

◆ lostMouseCapture()

void GHOST_WindowWin32::lostMouseCapture ( )

Inform the window that it has lost mouse capture, called in response to native window system messages (WA_INACTIVE, WM_CAPTURECHANGED) or if ReleaseCapture() is explicitly called (for new window creation).

Definition at line 664 of file GHOST_WindowWin32.cpp.

Referenced by GHOST_WindowWin32(), and GHOST_SystemWin32::s_wndProc().

◆ onPointerHitTest()

void GHOST_WindowWin32::onPointerHitTest ( WPARAM  wParam)

◆ resetPointerPenInfo()

void GHOST_WindowWin32::resetPointerPenInfo ( )

Resets pointer pen tablet state.

Definition at line 990 of file GHOST_WindowWin32.cpp.

References GHOST_TABLET_DATA_NONE.

Referenced by GHOST_SystemWin32::s_wndProc(), and GHOST_SystemWin32::setTabletAPI().

◆ screenToClient()

void GHOST_WindowWin32::screenToClient ( int32_t  inX,
int32_t  inY,
int32_t outX,
int32_t outY 
) const
virtual

Converts a point in screen coordinates to client rectangle coordinates

Parameters
inXThe x-coordinate on the screen.
inYThe y-coordinate on the screen.
outXThe x-coordinate in the client rectangle.
outYThe y-coordinate in the client rectangle.

Implements GHOST_IWindow.

Definition at line 475 of file GHOST_WindowWin32.cpp.

References Freestyle::Nature::POINT, and point.

◆ setClientHeight()

GHOST_TSuccess GHOST_WindowWin32::setClientHeight ( uint32_t  height)
virtual

Resizes client rectangle height.

Parameters
heightThe new height of the client area of the window.

Implements GHOST_IWindow.

Definition at line 425 of file GHOST_WindowWin32.cpp.

References getClientBounds(), GHOST_Rect::getHeight(), GHOST_Rect::getWidth(), getWindowBounds(), GHOST_kFailure, GHOST_kSuccess, and height.

◆ setClientSize()

GHOST_TSuccess GHOST_WindowWin32::setClientSize ( uint32_t  width,
uint32_t  height 
)
virtual

Resizes client rectangle.

Parameters
widthThe new width of the client area of the window.
heightThe new height of the client area of the window.

Implements GHOST_IWindow.

Definition at line 444 of file GHOST_WindowWin32.cpp.

References getClientBounds(), GHOST_Rect::getHeight(), GHOST_Rect::getWidth(), getWindowBounds(), GHOST_kFailure, GHOST_kSuccess, height, and width.

◆ setClientWidth()

GHOST_TSuccess GHOST_WindowWin32::setClientWidth ( uint32_t  width)
virtual

Resizes client rectangle width.

Parameters
widthThe new width of the client area of the window.

Implements GHOST_IWindow.

Definition at line 406 of file GHOST_WindowWin32.cpp.

References getClientBounds(), GHOST_Rect::getHeight(), GHOST_Rect::getWidth(), getWindowBounds(), GHOST_kFailure, GHOST_kSuccess, and width.

◆ setOrder()

GHOST_TSuccess GHOST_WindowWin32::setOrder ( GHOST_TWindowOrder  order)
virtual

Sets the order of the window (bottom, top).

Parameters
orderThe order of the window.
Returns
Indication of success.

Implements GHOST_IWindow.

Definition at line 539 of file GHOST_WindowWin32.cpp.

References FALSE, getState(), GHOST_kFailure, GHOST_kSuccess, GHOST_kWindowOrderBottom, GHOST_kWindowStateMinimized, GHOST_kWindowStateNormal, NULL, order, and setState().

◆ setProgressBar()

GHOST_TSuccess GHOST_WindowWin32::setProgressBar ( float  progress)
virtual

Sets the progress bar value displayed in the window/application icon

Parameters
progressThe progress percentage (0.0 to 1.0).

Reimplemented from GHOST_Window.

Definition at line 1165 of file GHOST_WindowWin32.cpp.

References GHOST_kFailure, GHOST_kSuccess, and ITaskbarList3::SetProgressValue().

◆ setState()

GHOST_TSuccess GHOST_WindowWin32::setState ( GHOST_TWindowState  state)
virtual

Sets the state of the window (normal, minimized, maximized).

Parameters
stateThe state of the window.
Returns
Indication of success.

Implements GHOST_IWindow.

Definition at line 497 of file GHOST_WindowWin32.cpp.

References getState(), GHOST_kFailure, GHOST_kSuccess, GHOST_kWindowStateFullScreen, GHOST_kWindowStateMaximized, GHOST_kWindowStateMinimized, GHOST_kWindowStateNormal, and state.

Referenced by GHOST_SystemWin32::s_wndProc(), and setOrder().

◆ setTitle()

void GHOST_WindowWin32::setTitle ( const char *  title)
virtual

Sets the title displayed in the title bar.

Parameters
titleThe title to display in the title bar.

Implements GHOST_IWindow.

Definition at line 349 of file GHOST_WindowWin32.cpp.

References alloc_utf16_from_8(), and free().

◆ ThemeRefresh()

void GHOST_WindowWin32::ThemeRefresh ( )

Called when OS colors change and when the window is created.

Definition at line 1059 of file GHOST_WindowWin32.cpp.

References L, and NULL.

Referenced by GHOST_WindowWin32(), and GHOST_SystemWin32::s_wndProc().

◆ updateDirectManipulation()

void GHOST_WindowWin32::updateDirectManipulation ( )

◆ updateDPI()

void GHOST_WindowWin32::updateDPI ( )

◆ updateMouseCapture()

void GHOST_WindowWin32::updateMouseCapture ( GHOST_MouseCaptureEventWin32  event)

Set or Release mouse capture (should be called for any real button press).

Parameters
eventWhether mouse was pressed and released, or an operator grabbed or ungrabbed the mouse.

Definition at line 678 of file GHOST_WindowWin32.cpp.

References MousePressed, MouseReleased, OperatorGrab, and OperatorUngrab.

Referenced by GHOST_SystemWin32::processButtonEvent(), GHOST_SystemWin32::processPointerEvent(), and GHOST_SystemWin32::processWintabEvent().

◆ usingTabletAPI()

bool GHOST_WindowWin32::usingTabletAPI ( GHOST_TTabletAPI  api) const

Member Data Documentation

◆ m_inLiveResize

bool GHOST_WindowWin32::m_inLiveResize

True if the window currently resizing.

Definition at line 298 of file GHOST_WindowWin32.h.

Referenced by GHOST_SystemWin32::processWindowSizeEvent(), and GHOST_SystemWin32::s_wndProc().

◆ m_mousePresent

bool GHOST_WindowWin32::m_mousePresent

True if the mouse is either over or captured by the window.

Definition at line 295 of file GHOST_WindowWin32.h.

Referenced by GHOST_SystemWin32::s_wndProc().


The documentation for this class was generated from the following files: