KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SCH_PREVIEW_PANEL Class Reference

#include <sch_preview_panel.h>

Inheritance diagram for SCH_PREVIEW_PANEL:
EDA_DRAW_PANEL_GAL

Public Types

enum  GAL_TYPE {
  GAL_TYPE_UNKNOWN = -1 , GAL_TYPE_NONE = 0 , GAL_TYPE_OPENGL = 1 , GAL_TYPE_CAIRO = 2 ,
  GAL_TYPE_MODERN = 3 , GAL_TYPE_LAST
}
 

Public Member Functions

 SCH_PREVIEW_PANEL (wxWindow *aParentWindow, wxWindowID aWindowId, const wxPoint &aPosition, const wxSize &aSize, KIGFX::GAL_DISPLAY_OPTIONS &aOptions, GAL_TYPE aGalType=GAL_TYPE_MODERN)
 
 ~SCH_PREVIEW_PANEL () override
 
void OnShow () override
 Called when the window is shown for the first time.
 
void Refresh (bool aEraseBackground, const wxRect *aRect) override
 
SCH_RENDER_SETTINGS * GetRenderSettings () const
 
void SetFocus () override
 
bool StatusPopupHasFocus ()
 
void SetStatusPopup (wxWindow *aPopup)
 
virtual bool SwitchBackend (GAL_TYPE aGalType)
 Switch method of rendering graphics.
 
void UpdateTouchpadGestureHandler ()
 Apply the current native touchpad gesture preference to the active backend window.
 
GAL_TYPE GetBackend () const
 Return the type of backend currently used by GAL canvas.
 
KIGFX::GAL * GetGAL () const
 Return a pointer to the GAL instance used in the panel.
 
virtual KIGFX::VIEW * GetView () const
 Return a pointer to the KIGFX::VIEW instance used in the panel.
 
KIGFX::VIEW_CONTROLS * GetViewControls () const
 Return a pointer to the KIGFX::VIEW_CONTROLS instance used in the panel.
 
bool GetScreenshot (wxImage &aDstImage)
 Capture the current canvas contents into aDstImage.
 
void ForceRefresh ()
 Force a redraw.
 
void RequestRefresh ()
 Make sure a refresh gets done on the next idle event if it hasn't already.
 
void UpdateOverlayExclusions ()
 Tell the backend which areas of this panel are covered by an overlaid infobar.
 
void ResizeGal (bool aForce=false)
 Resize the GAL to the current client size of this panel.
 
void SetEventDispatcher (TOOL_DISPATCHER *aEventDispatcher)
 Set a dispatcher that processes events and forwards them to tools.
 
void StartDrawing ()
 Begin drawing if it was stopped previously.
 
void StopDrawing ()
 Prevent the GAL canvas from further drawing until it is recreated or StartDrawing() is called.
 
virtual void SetHighContrastLayer (int aLayer)
 Take care of display settings for the given layer to be displayed in high contrast mode.
 
virtual void SetTopLayer (int aLayer)
 Move the selected layer to the top, so it is displayed above all others.
 
virtual void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
 
EDA_DRAW_FRAME * GetParentEDAFrame () const
 Returns parent EDA_DRAW_FRAME, if available or NULL otherwise.
 
bool IsDialogPreview () const
 
void SetStealsFocus (bool aStealsFocus)
 Set whether focus is taken on certain events (mouseover, keys, etc).
 
void SetCurrentCursor (KICURSOR aCursor)
 Set the current cursor shape for this panel.
 
virtual BOX2I GetDefaultViewBBox () const
 Return the bounding box of the view that should be used if model is not valid.
 
void ZoomToFit (const BOX2I &aBox, std::optional< double > aMarginScale=std::nullopt)
 Scale and centre the view on aBox, and fit it again whenever the canvas changes size until something else zooms or pans.
 
void OnEvent (wxEvent &aEvent)
 Used to forward events to the canvas from popups, etc.
 
bool DoRePaint (bool aAllowSkip=true)
 Repaint the canvas, and fix scrollbar cursors.
 
std::shared_ptr< KIGFX::VIEW_OVERLAY > DebugOverlay ()
 Create an overlay for rendering debug graphics.
 
void ClearDebugOverlay ()
 Clear the contents of the debug overlay and removes it from the VIEW.
 
virtual void prepareGridSources ()
 Hook for subclasses to push per-frame grid sources onto the GAL.
 
virtual void beforeRedraw ()
 Hook for subclasses to update view items whose inputs nothing else tracks.
 

Static Public Member Functions

static GAL_TYPE ResolveStoredCanvasType (int aStoredCanvasType)
 Convert a stored canvas type setting into a backend that can actually be used.
 
static GAL_TYPE CanvasAfterFailure (GAL_TYPE aFailedCanvasType)
 Return the canvas that takes over from one that could not be used.
 
static bool IsAccelerated (GAL_TYPE aCanvasType)
 True for a canvas drawn on the GPU, which keeps cached layers between frames.
 
static int ScreenSizePad (GAL_TYPE aBackend)
 Return how many pixels larger than the client area a backend's GAL is made.
 
static void NoteInput ()
 Count an input so the frame that answers it is never held back by the display-rate limit.
 
static KIGFX::VC_SETTINGS GetVcSettings ()
 Gets a populated View Controls settings object dervived from our program settings.
 

Public Attributes

bool m_MouseCapturedLost
 used on wxMSW: true after a wxEVT_MOUSE_CAPTURE_LOST was received false after the mouse is recaptured.
 
std::unique_ptr< PROF_COUNTER > m_PaintEventCounter
 

Static Public Attributes

static constexpr GAL_TYPE GAL_FALLBACK = GAL_TYPE_CAIRO
 
static constexpr bool GAL_FALLBACK_AVAILABLE = GAL_FALLBACK != GAL_TYPE_OPENGL
 

Protected Member Functions

void onPaint (wxPaintEvent &WXUNUSED(aEvent)) override
 
KIGFX::SCH_VIEW * view () const
 
void setDefaultLayerOrder ()
 Reassign layer order to the initial settings.
 
void setDefaultLayerDeps ()
 Set rendering targets & dependencies for layers.
 
void onSize (wxSizeEvent &aEvent)
 
void onEnter (wxMouseEvent &aEvent)
 
void onLostFocus (wxFocusEvent &aEvent)
 
void onIdle (wxIdleEvent &aEvent)
 
void onRefreshTimer (wxTimerEvent &aEvent)
 
void onShowEvent (wxShowEvent &aEvent)
 
bool recoverFromGalError (const std::exception &aErr)
 
float displayRefreshRate ()
 Refresh rate in Hz of the display showing the canvas, or 0 when unknown.
 
bool handleContextLoss ()
 Replace a GAL whose context was destroyed by a GPU reset.
 
void showMessageLater (const wxString &aTitle, const wxString &aDetail, bool aError)
 Show a recovery message once the current event finishes.
 
bool abandonRhiCanvas (const wxString &aDetail)
 Leave the RHI canvas for GAL_FALLBACK after its device could not be created or restored.
 
void teardownModernRenderInfra ()
 Stop the RHI render thread and release its swapchain, mailbox and buffers.
 
const RHI_NATIVE_WINDOW_HANDLE & getCachedNativeWindowHandle ()
 Return the native window handle for RHI surface creation, or an invalid handle until the window is realized.
 
void releaseCachedNativeWindowHandle ()
 
void presentFrame ()
 Present the most recently submitted frame packet.
 
wxSize backendScreenSize () const
 The padded size of the backend window, which sits below the top overlay inset.
 
void submitCachedScene ()
 Submit the last full scene again with the current camera and cursor, keeping all targets.
 

Protected Attributes

wxWindow * m_parent
 Pointer to the parent window.
 
EDA_DRAW_FRAME * m_edaFrame
 Parent EDA_DRAW_FRAME (if available)
 
std::chrono::steady_clock::time_point m_lastRepaintStart
 Timestamp of the last repaint start.
 
std::chrono::steady_clock::time_point m_lastRepaintEnd
 Timestamp of the last repaint end.
 
wxTimer m_refreshTimer
 Timer to prevent too-frequent refreshing.
 
std::mutex m_refreshMutex
 Blocks multiple calls to the draw.
 
bool m_drawing
 True if GAL is currently redrawing the view.
 
bool m_drawingEnabled
 Flag that determines if VIEW may use GAL for redrawing the screen.
 
bool m_needIdleRefresh
 True when canvas needs to be refreshed from idle handler.
 
bool m_refreshDeferred = false
 The refresh timer was armed by Refresh() for a repaint it postponed.
 
VECTOR2D m_lastCursorPosition
 Last cursor position sent to GAL for drawing.
 
KIGFX::GAL * m_gal
 Interface for drawing objects on a 2D-surface.
 
KIGFX::VIEW * m_view
 Stores view settings (scale, center, etc.) and items to be drawn.
 
std::unique_ptr< KIGFX::PAINTER > m_painter
 Contains information about how to draw items using GAL.
 
KIGFX::WX_VIEW_CONTROLS * m_viewControls
 Control for VIEW (moving, zooming, etc.)
 
GAL_TYPE m_backend
 Currently used GAL.
 
KIGFX::GAL_DISPLAY_OPTIONS & m_options
 
TOOL_DISPATCHER * m_eventDispatcher
 Processes and forwards events to tools.
 
bool m_lostFocus
 Flag to indicate that focus should be regained on the next mouse event.
 
KIGFX::AUTOMATIC_FIT m_automaticFit
 What the last ZoomToFit() left, refitted on a resize until the view is zoomed or panned.
 
bool m_recoveryAttempted
 Set after a GPU recovery attempt to prevent infinite retry loops.
 
int m_contextBindFailures
 Consecutive frames dropped because the GL context could not be made current.
 
bool m_rebuiltAfterReset
 The GAL was rebuilt after a GPU reset and has not completed a frame yet.
 
bool m_pendingResize
 Set when a size change could not be applied because the GL context was unavailable.
 
int m_overlayInsetTop = 0
 Rows at the top of the panel left to the infobars where the backend window would hide them.
 
bool m_stealsFocus
 Flag to indicate whether the panel should take focus at certain times (when moused over, and on various mouse/key events)
 
wxWindow * m_statusPopup
 
std::shared_ptr< KIGFX::RENDER_THREAD > m_renderThread
 The render thread that owns the RHI device, shared by every canvas, see GAL_MODERN::AcquireRenderThread()
 
std::unique_ptr< KIGFX::RHI_DEVICE_PROXY > m_deviceProxy
 The UI thread's access to the device.
 
std::unique_ptr< KIGFX::SWAPCHAIN_CONTROLLER > m_swapchainCtrl
 
std::unique_ptr< KIGFX::FRAME_MAILBOX > m_frameMailbox
 Delivers frame packets to the render thread.
 
uint32_t m_windowId = 0
 Routes this window's work on the render thread.
 
bool m_needsExternalRenderingSetup = false
 True until the first paint completes the deferred GTK drawing suppression.
 
RHI_NATIVE_WINDOW_HANDLE m_cachedNativeHandle
 Fetching the handle forces a display-server flush, so it is cached between realizations and fetched again only when m_nativeHandleValid is cleared on swapchain recreation.
 
bool m_nativeHandleValid = false
 
float m_refreshRate = 0.0f
 What displayRefreshRate() last asked the window system.
 
std::chrono::steady_clock::time_point m_refreshRateAsked
 
KIGFX::FRAME_DRAW_DESC m_lastFullStaticDesc
 Draw descriptors of the last full redraw, reused by frames that need no new geometry.
 
KIGFX::FRAME_DRAW_DESC m_lastFullDynamicDesc
 
bool m_hasLastFullDrawDesc = false
 
uint64_t m_staticEpoch = 1
 Content generations of the static and dynamic pools last submitted, see FRAME_PACKET.
 
uint64_t m_dynamicEpoch = 1
 
KIGFX::RHI_LINE_PIPELINE_KIND m_linePipelineKind = KIGFX::RHI_LINE_PIPELINE_KIND::PCB_TRACKS
 Fixed in the constructor from the parent frame's editor.
 
std::shared_ptr< KIGFX::VIEW_OVERLAY > m_debugOverlay
 Optional overlay for drawing transient debug objects.
 
std::unique_ptr< KIPLATFORM::UI::TOUCHPAD_GESTURE_HANDLER > m_touchpadGestureHandler
 

Detailed Description

Definition at line 37 of file sch_preview_panel.h.

Member Enumeration Documentation

◆ GAL_TYPE

Enumerator
GAL_TYPE_UNKNOWN 

not specified: a GAL engine must be set by the client

GAL_TYPE_NONE 

GAL not used (the legacy wxDC engine is used)

GAL_TYPE_OPENGL 

OpenGL implementation.

GAL_TYPE_CAIRO 

Cairo implementation.

GAL_TYPE_MODERN 

RHI implementation, Vulkan or Metal on macOS.

GAL_TYPE_LAST 

Sentinel, do not use as a parameter.

Definition at line 78 of file class_draw_panel_gal.h.

Constructor & Destructor Documentation

◆ SCH_PREVIEW_PANEL()

◆ ~SCH_PREVIEW_PANEL()

SCH_PREVIEW_PANEL::~SCH_PREVIEW_PANEL ( )
override

Definition at line 84 of file sch_preview_panel.cpp.

Member Function Documentation

◆ abandonRhiCanvas()

bool EDA_DRAW_PANEL_GAL::abandonRhiCanvas ( const wxString & aDetail)
protectedinherited

Leave the RHI canvas for GAL_FALLBACK after its device could not be created or restored.

The user is told the first time it happens in a session.

Definition at line 371 of file draw_panel_gal.cpp.

References _, EDA_DRAW_FRAME::CanvasFailed(), GAL_FALLBACK, GAL_TYPE_MODERN, EDA_DRAW_FRAME::SetCanvasFailed(), showMessageLater(), SwitchBackend(), and traceRhi.

Referenced by DoRePaint(), recoverFromGalError(), and SwitchBackend().

◆ backendScreenSize()

wxSize EDA_DRAW_PANEL_GAL::backendScreenSize ( ) const
protectedinherited

The padded size of the backend window, which sits below the top overlay inset.

Definition at line 1103 of file draw_panel_gal.cpp.

References m_backend, m_overlayInsetTop, pad, and ScreenSizePad().

Referenced by presentFrame(), and ResizeGal().

◆ beforeRedraw()

virtual void EDA_DRAW_PANEL_GAL::beforeRedraw ( )
inlinevirtualinherited

Hook for subclasses to update view items whose inputs nothing else tracks.

Called from DoRePaint before the pending item updates are applied.

Reimplemented in PCB_DRAW_PANEL_GAL.

Definition at line 382 of file class_draw_panel_gal.h.

Referenced by DoRePaint().

◆ CanvasAfterFailure()

EDA_DRAW_PANEL_GAL::GAL_TYPE EDA_DRAW_PANEL_GAL::CanvasAfterFailure ( GAL_TYPE aFailedCanvasType)
staticinherited

Return the canvas that takes over from one that could not be used.

A failed accelerated canvas goes straight to GAL_FALLBACK.

Returns
GAL_TYPE_NONE when nothing is left to switch to.

Definition at line 362 of file draw_panel_gal.cpp.

References GAL_FALLBACK, GAL_TYPE_NONE, and IsAccelerated().

Referenced by recoverFromGalError().

◆ ClearDebugOverlay()

void EDA_DRAW_PANEL_GAL::ClearDebugOverlay ( )
inherited

Clear the contents of the debug overlay and removes it from the VIEW.

Definition at line 1836 of file draw_panel_gal.cpp.

References m_debugOverlay, and m_view.

◆ DebugOverlay()

std::shared_ptr< KIGFX::VIEW_OVERLAY > EDA_DRAW_PANEL_GAL::DebugOverlay ( )
inherited

Create an overlay for rendering debug graphics.

Definition at line 1824 of file draw_panel_gal.cpp.

References m_debugOverlay, and m_view.

◆ displayRefreshRate()

float EDA_DRAW_PANEL_GAL::displayRefreshRate ( )
protectedinherited

Refresh rate in Hz of the display showing the canvas, or 0 when unknown.

Definition at line 1218 of file draw_panel_gal.cpp.

References KIPLATFORM::UI::GetDisplayRefreshRate(), m_refreshRate, and m_refreshRateAsked.

Referenced by presentFrame(), and Refresh().

◆ DoRePaint()

bool EDA_DRAW_PANEL_GAL::DoRePaint ( bool aAllowSkip = true)
inherited

Repaint the canvas, and fix scrollbar cursors.

Usually called by a OnPaint event.

Does not use a wxPaintDC, so it can be called outside a wxPaintEvent.

Returns
true if the repaint attempt was successful.

Definition at line 606 of file draw_panel_gal.cpp.

References _, abandonRhiCanvas(), ApplyAntialiasingMode(), beforeRedraw(), GAL_TYPE_MODERN, GAL_TYPE_NONE, GAL_TYPE_OPENGL, KIGFX::RENDER_SETTINGS::GetBackgroundColor(), KIGFX::VIEW::GetCenter(), KIGFX::RENDER_SETTINGS::GetCursorColor(), KIGFX::RENDER_SETTINGS::GetGridColor(), GetParentEDAFrame(), EDA_DRAW_FRAME::GetScreen(), GetView(), handleContextLoss(), IsAccelerated(), IsDialogPreview(), KIGFX::GAL_DRAWING_CONTEXT::IsDrawing(), KIGFX::FRAME_DRAW_DESC::linePipelineKind, m_backend, m_contextBindFailures, m_drawing, m_drawingEnabled, m_dynamicEpoch, m_frameMailbox, m_gal, m_hasLastFullDrawDesc, m_lastCursorPosition, m_lastFullDynamicDesc, m_lastFullStaticDesc, m_lastRepaintEnd, m_lastRepaintStart, m_linePipelineKind, m_options, m_painter, m_pendingResize, m_rebuiltAfterReset, m_recoveryAttempted, m_refreshMutex, m_renderThread, BASE_SCREEN::m_ScrollCenter, m_staticEpoch, m_swapchainCtrl, m_view, m_viewControls, m_windowId, MAX_CONTEXT_BIND_RETRIES, Pgm(), prepareGridSources(), presentFrame(), recoverFromGalError(), RequestRefresh(), ResizeGal(), s_inputSerial, showMessageLater(), PROF_TIMER::Start(), StartDrawing(), PROF_TIMER::Stop(), StopDrawing(), submitCachedScene(), KIGFX::FRAME_DRAW_DESC::supersampleFactor, SwitchBackend(), KIGFX::TARGET_NONCACHED, KIGFX::TARGET_OVERLAY, PROF_TIMER::to_string(), traceDrawPanel, traceGalProfile, and traceRhi.

Referenced by ForceRefresh(), GetScreenshot(), onPaint(), onRefreshTimer(), and Refresh().

◆ ForceRefresh()

void EDA_DRAW_PANEL_GAL::ForceRefresh ( )
inherited

◆ GetBackend()

◆ getCachedNativeWindowHandle()

const RHI_NATIVE_WINDOW_HANDLE & EDA_DRAW_PANEL_GAL::getCachedNativeWindowHandle ( )
protectedinherited

Return the native window handle for RHI surface creation, or an invalid handle until the window is realized.

It is fetched again only after swapchain recreation.

Definition at line 130 of file draw_panel_gal.cpp.

References COCOA, GetNativeWindowHandle(), RHI_METAL_HOST_VIEW::layer, m_cachedNativeHandle, m_nativeHandleValid, RhiMetalAttachHostView(), and RHI_METAL_HOST_VIEW::view.

Referenced by presentFrame().

◆ GetDefaultViewBBox()

virtual BOX2I EDA_DRAW_PANEL_GAL::GetDefaultViewBBox ( ) const
inlinevirtualinherited

Return the bounding box of the view that should be used if model is not valid.

For example, the drawing sheet bounding box for an empty PCB

Returns
the default bounding box for the panel.

Reimplemented in GERBVIEW_DRAW_PANEL_GAL, and PCB_DRAW_PANEL_GAL.

Definition at line 313 of file class_draw_panel_gal.h.

Referenced by COMMON_TOOLS::doCenter(), and ZoomToFit().

◆ GetGAL()

◆ GetMsgPanelInfo()

virtual void EDA_DRAW_PANEL_GAL::GetMsgPanelInfo ( EDA_DRAW_FRAME * aFrame,
std::vector< MSG_PANEL_ITEM > & aList )
inlinevirtualinherited

Reimplemented in GERBVIEW_DRAW_PANEL_GAL, PCB_DRAW_PANEL_GAL, and PL_DRAW_PANEL_GAL.

Definition at line 276 of file class_draw_panel_gal.h.

◆ GetParentEDAFrame()

◆ GetRenderSettings()

SCH_RENDER_SETTINGS * SCH_PREVIEW_PANEL::GetRenderSettings ( ) const

Definition at line 89 of file sch_preview_panel.cpp.

References EDA_DRAW_PANEL_GAL::m_painter.

Referenced by SCH_PREVIEW_PANEL().

◆ GetScreenshot()

bool EDA_DRAW_PANEL_GAL::GetScreenshot ( wxImage & aDstImage)
inherited

Capture the current canvas contents into aDstImage.

Returns
true on success, false if the backend can't be captured this way (the caller should fall back to a DC blit).

Definition at line 1299 of file draw_panel_gal.cpp.

References DoRePaint(), GAL_TYPE_MODERN, GAL_TYPE_OPENGL, GetScreenshot(), m_backend, m_gal, m_renderThread, and m_windowId.

Referenced by GetScreenshot().

◆ GetVcSettings()

KIGFX::VC_SETTINGS EDA_DRAW_PANEL_GAL::GetVcSettings ( )
staticinherited

Gets a populated View Controls settings object dervived from our program settings.

Definition at line 1846 of file draw_panel_gal.cpp.

References COMMON_SETTINGS::INPUT::auto_pan, COMMON_SETTINGS::INPUT::auto_pan_acceleration, COMMON_SETTINGS::INPUT::center_on_zoom, COMMON_SETTINGS::INPUT::drag_left, COMMON_SETTINGS::INPUT::drag_middle, COMMON_SETTINGS::INPUT::drag_right, COMMON_SETTINGS::INPUT::focus_follow_sch_pcb, PGM_BASE::GetCommonSettings(), COMMON_SETTINGS::INPUT::horizontal_pan, KIGFX::VC_SETTINGS::m_autoPanAcceleration, KIGFX::VC_SETTINGS::m_autoPanSettingEnabled, KIGFX::VC_SETTINGS::m_dragLeft, KIGFX::VC_SETTINGS::m_dragMiddle, KIGFX::VC_SETTINGS::m_dragRight, KIGFX::VC_SETTINGS::m_focusFollowSchPcb, KIGFX::VC_SETTINGS::m_horizontalPan, COMMON_SETTINGS::m_Input, KIGFX::VC_SETTINGS::m_motionPanModifier, KIGFX::VC_SETTINGS::m_scrollModifierPanH, KIGFX::VC_SETTINGS::m_scrollModifierPanV, KIGFX::VC_SETTINGS::m_scrollModifierZoom, KIGFX::VC_SETTINGS::m_scrollReversePanH, KIGFX::VC_SETTINGS::m_scrollReverseZoom, KIGFX::VC_SETTINGS::m_warpCursor, KIGFX::VC_SETTINGS::m_zoomAcceleration, KIGFX::VC_SETTINGS::m_zoomSpeed, KIGFX::VC_SETTINGS::m_zoomSpeedAuto, COMMON_SETTINGS::INPUT::motion_pan_modifier, Pgm(), COMMON_SETTINGS::INPUT::reverse_scroll_pan_h, COMMON_SETTINGS::INPUT::reverse_scroll_zoom, COMMON_SETTINGS::INPUT::scroll_modifier_pan_h, COMMON_SETTINGS::INPUT::scroll_modifier_pan_v, COMMON_SETTINGS::INPUT::scroll_modifier_zoom, COMMON_SETTINGS::INPUT::zoom_acceleration, COMMON_SETTINGS::INPUT::zoom_speed, and COMMON_SETTINGS::INPUT::zoom_speed_auto.

Referenced by EDA_3D_VIEWER_FRAME::applySettings(), EDA_3D_VIEWER_FRAME::configureCanvas(), and SwitchBackend().

◆ GetView()

◆ GetViewControls()

◆ handleContextLoss()

bool EDA_DRAW_PANEL_GAL::handleContextLoss ( )
protectedinherited

Replace a GAL whose context was destroyed by a GPU reset.

Returns
true if the GAL was replaced, so the current repaint must stop.

Definition at line 503 of file draw_panel_gal.cpp.

References _, GAL_FALLBACK, GAL_FALLBACK_AVAILABLE, GAL_TYPE_NONE, GAL_TYPE_OPENGL, m_backend, m_gal, m_rebuiltAfterReset, m_refreshTimer, KIGFX::NONE, KIGFX::RECOVERABLE, KIGFX::REPEATED, EDA_DRAW_FRAME::SetCanvasFailed(), showMessageLater(), StartDrawing(), SwitchBackend(), and traceGalContext.

Referenced by DoRePaint(), and recoverFromGalError().

◆ IsAccelerated()

static bool EDA_DRAW_PANEL_GAL::IsAccelerated ( GAL_TYPE aCanvasType)
inlinestaticinherited

◆ IsDialogPreview()

bool EDA_DRAW_PANEL_GAL::IsDialogPreview ( ) const
inlineinherited

◆ NoteInput()

void EDA_DRAW_PANEL_GAL::NoteInput ( )
staticinherited

Count an input so the frame that answers it is never held back by the display-rate limit.

Call before the input is acted on.

Definition at line 1688 of file draw_panel_gal.cpp.

References s_inputSerial.

Referenced by OnEvent(), KIGFX::WX_VIEW_CONTROLS::onMotion(), and KIGFX::WX_VIEW_CONTROLS::onWheel().

◆ onEnter()

void EDA_DRAW_PANEL_GAL::onEnter ( wxMouseEvent & aEvent)
protectedinherited

◆ OnEvent()

void EDA_DRAW_PANEL_GAL::OnEvent ( wxEvent & aEvent)
inherited

◆ onIdle()

void EDA_DRAW_PANEL_GAL::onIdle ( wxIdleEvent & aEvent)
protectedinherited

Definition at line 1747 of file draw_panel_gal.cpp.

References m_needIdleRefresh, m_windowId, Refresh(), and traceRhi.

Referenced by ForceRefresh(), and StopDrawing().

◆ onLostFocus()

void EDA_DRAW_PANEL_GAL::onLostFocus ( wxFocusEvent & aEvent)
protectedinherited

Definition at line 1731 of file draw_panel_gal.cpp.

References m_eventDispatcher, m_lostFocus, and m_viewControls.

Referenced by EDA_DRAW_PANEL_GAL().

◆ onPaint()

void SCH_PREVIEW_PANEL::onPaint ( wxPaintEvent & WXUNUSEDaEvent)
overrideprotectedvirtual

Reimplemented from EDA_DRAW_PANEL_GAL.

Definition at line 145 of file sch_preview_panel.cpp.

References EDA_DRAW_PANEL_GAL::onPaint().

◆ onRefreshTimer()

void EDA_DRAW_PANEL_GAL::onRefreshTimer ( wxTimerEvent & aEvent)
protectedinherited

◆ OnShow()

void SCH_PREVIEW_PANEL::OnShow ( )
overridevirtual

Called when the window is shown for the first time.

Updating the view's items tells whether the canvas can draw, and it falls back to another canvas when it cannot.

Reimplemented from EDA_DRAW_PANEL_GAL.

Definition at line 95 of file sch_preview_panel.cpp.

◆ onShowEvent()

void EDA_DRAW_PANEL_GAL::onShowEvent ( wxShowEvent & aEvent)
protectedinherited

Definition at line 1782 of file draw_panel_gal.cpp.

References m_gal, m_windowId, OnShow(), and traceRhi.

Referenced by EDA_DRAW_PANEL_GAL(), and ~EDA_DRAW_PANEL_GAL().

◆ onSize()

void EDA_DRAW_PANEL_GAL::onSize ( wxSizeEvent & aEvent)
protectedinherited

Definition at line 1030 of file draw_panel_gal.cpp.

References m_automaticFit, m_view, ResizeGal(), and ZoomToFit().

Referenced by EDA_DRAW_PANEL_GAL().

◆ prepareGridSources()

virtual void EDA_DRAW_PANEL_GAL::prepareGridSources ( )
inlinevirtualinherited

Hook for subclasses to push per-frame grid sources onto the GAL.

Called from DoRePaint just before GAL::DrawGrid.

Reimplemented in PCB_DRAW_PANEL_GAL.

Definition at line 376 of file class_draw_panel_gal.h.

Referenced by DoRePaint().

◆ presentFrame()

void EDA_DRAW_PANEL_GAL::presentFrame ( )
protectedinherited

Present the most recently submitted frame packet.

An unmapped surface arms the refresh timer instead.

Definition at line 166 of file draw_panel_gal.cpp.

References backendScreenSize(), displayRefreshRate(), getCachedNativeWindowHandle(), RHI_NATIVE_WINDOW_HANDLE::IsValid(), m_needsExternalRenderingSetup, m_refreshTimer, m_swapchainCtrl, m_windowId, KIPLATFORM::UI::PrepareForExternalRendering(), and traceRhi.

Referenced by DoRePaint().

◆ recoverFromGalError()

bool EDA_DRAW_PANEL_GAL::recoverFromGalError ( const std::exception & aErr)
protectedinherited

◆ Refresh()

void SCH_PREVIEW_PANEL::Refresh ( bool aEraseBackground,
const wxRect * aRect )
overridevirtual

Reimplemented from EDA_DRAW_PANEL_GAL.

Definition at line 139 of file sch_preview_panel.cpp.

References EDA_DRAW_PANEL_GAL::Refresh().

◆ releaseCachedNativeWindowHandle()

void EDA_DRAW_PANEL_GAL::releaseCachedNativeWindowHandle ( )
protectedinherited

◆ RequestRefresh()

void EDA_DRAW_PANEL_GAL::RequestRefresh ( )
inherited

Make sure a refresh gets done on the next idle event if it hasn't already.

Definition at line 1212 of file draw_panel_gal.cpp.

References m_needIdleRefresh.

Referenced by DoRePaint(), ZONE_PREVIEW_CANVAS::LockZoom(), onRefreshTimer(), Refresh(), ResizeGal(), PCB_EDIT_FRAME::SetActiveLayer(), ZONE_PREVIEW_CANVAS::ZONE_PREVIEW_CANVAS(), and ZONE_PREVIEW_CANVAS::ZoomFitScreen().

◆ ResizeGal()

void EDA_DRAW_PANEL_GAL::ResizeGal ( bool aForce = false)
inherited

Resize the GAL to the current client size of this panel.

This must be used in preference to calling GAL::ResizeScreen() directly: it holds the GL context lock while the compositor buffers are reallocated, clamps degenerate sizes and invalidates the view.

Parameters
aForcereallocates even when the client size is unchanged, which is required after a display scale factor change because the buffers are sized in native pixels rather than client units.

Definition at line 1115 of file draw_panel_gal.cpp.

References backendScreenSize(), GAL_TYPE_MODERN, m_backend, m_gal, m_overlayInsetTop, m_pendingResize, m_swapchainCtrl, m_view, Refresh(), RequestRefresh(), and ToVECTOR2I().

Referenced by DoRePaint(), EDA_DRAW_FRAME::OnMove(), onSize(), and UpdateOverlayExclusions().

◆ ResolveStoredCanvasType()

EDA_DRAW_PANEL_GAL::GAL_TYPE EDA_DRAW_PANEL_GAL::ResolveStoredCanvasType ( int aStoredCanvasType)
staticinherited

Convert a stored canvas type setting into a backend that can actually be used.

A settings file may have been written by hand or by another version of KiCad, so a value outside the supported range is bad data rather than a programming error. It resolves to the OpenGL canvas, as does the retired wxDC canvas (GAL_TYPE_NONE). Only an explicitly stored GAL_TYPE_MODERN selects the RHI canvas.

Parameters
aStoredCanvasTypeis the raw COMMON_SETTINGS graphics.canvas_type value.
Returns
a GAL type that SwitchBackend() implements.

Definition at line 1378 of file draw_panel_gal.cpp.

References GAL_TYPE_CAIRO, GAL_TYPE_MODERN, and GAL_TYPE_OPENGL.

Referenced by PANEL_COMMON_SETTINGS::applySettingsToPanel(), PANEL_SYMBOL_CHOOSER::constructRightPanel(), EDA_DRAW_PANEL_GAL(), EDA_DRAW_FRAME::loadCanvasTypeSetting(), FOOTPRINT_PREVIEW_PANEL::New(), and PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS().

◆ ScreenSizePad()

int EDA_DRAW_PANEL_GAL::ScreenSizePad ( GAL_TYPE aBackend)
staticinherited

Return how many pixels larger than the client area a backend's GAL is made.

Definition at line 1086 of file draw_panel_gal.cpp.

References GAL_TYPE_MODERN, and GAL_TYPE_OPENGL.

Referenced by backendScreenSize(), and SwitchBackend().

◆ SetCurrentCursor()

void EDA_DRAW_PANEL_GAL::SetCurrentCursor ( KICURSOR aCursor)
inherited

◆ setDefaultLayerDeps()

void SCH_PREVIEW_PANEL::setDefaultLayerDeps ( )
protected

◆ setDefaultLayerOrder()

void SCH_PREVIEW_PANEL::setDefaultLayerOrder ( )
protected

Reassign layer order to the initial settings.

Definition at line 101 of file sch_preview_panel.cpp.

References EDA_DRAW_PANEL_GAL::m_view, SCH_LAYER_ORDER, and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by SCH_PREVIEW_PANEL().

◆ SetEventDispatcher()

void EDA_DRAW_PANEL_GAL::SetEventDispatcher ( TOOL_DISPATCHER * aEventDispatcher)
inherited

Set a dispatcher that processes events and forwards them to tools.

EDA_DRAW_PANEL_GAL does not take over the ownership. Passing NULL disconnects all event handlers from the EDA_DRAW_PANEL_GAL and parent frame.

Parameters
aEventDispatcheris the object that will be used for dispatching events.

Definition at line 1331 of file draw_panel_gal.cpp.

References m_eventDispatcher.

Referenced by GERBVIEW_FRAME::ActivateGalCanvas(), PCB_BASE_FRAME::ActivateGalCanvas(), DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), FOOTPRINT_CHOOSER_FRAME::FOOTPRINT_CHOOSER_FRAME(), FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME(), FOOTPRINT_EDIT_FRAME::setupTools(), PL_EDITOR_FRAME::setupTools(), SCH_EDIT_FRAME::setupTools(), SYMBOL_EDIT_FRAME::setupTools(), and SYMBOL_VIEWER_FRAME::setupTools().

◆ SetFocus()

◆ SetHighContrastLayer()

void EDA_DRAW_PANEL_GAL::SetHighContrastLayer ( int aLayer)
virtualinherited

Take care of display settings for the given layer to be displayed in high contrast mode.

Reimplemented in GERBVIEW_DRAW_PANEL_GAL, and PCB_DRAW_PANEL_GAL.

Definition at line 1356 of file draw_panel_gal.cpp.

References KIGFX::RENDER_SETTINGS::ClearHighContrastLayers(), m_view, KIGFX::RENDER_SETTINGS::SetLayerIsHighContrast(), and SetTopLayer().

Referenced by GERBVIEW_FRAME::SetActiveLayer(), and PCB_BASE_FRAME::SetDisplayOptions().

◆ SetStatusPopup()

◆ SetStealsFocus()

void EDA_DRAW_PANEL_GAL::SetStealsFocus ( bool aStealsFocus)
inlineinherited

Set whether focus is taken on certain events (mouseover, keys, etc).

This should be true (and is by default) for any primary canvas, but can be false to make well behaved preview panes and the like.

Definition at line 300 of file class_draw_panel_gal.h.

References m_stealsFocus.

Referenced by SYMBOL_VIEWER_FRAME::ClickOnSymbolList(), FOOTPRINT_PREVIEW_PANEL::FOOTPRINT_PREVIEW_PANEL(), and SYMBOL_VIEWER_FRAME::SetSelectedLibrary().

◆ SetTopLayer()

void EDA_DRAW_PANEL_GAL::SetTopLayer ( int aLayer)
virtualinherited

Move the selected layer to the top, so it is displayed above all others.

Reimplemented in GERBVIEW_DRAW_PANEL_GAL, PCB_DRAW_PANEL_GAL, and PL_DRAW_PANEL_GAL.

Definition at line 1370 of file draw_panel_gal.cpp.

References m_view.

Referenced by SetHighContrastLayer().

◆ showMessageLater()

void EDA_DRAW_PANEL_GAL::showMessageLater ( const wxString & aTitle,
const wxString & aDetail,
bool aError )
protectedinherited

Show a recovery message once the current event finishes.

Recovery runs inside a repaint, where a modal dialog would stop every canvas from painting until it was closed.

Definition at line 562 of file draw_panel_gal.cpp.

References DisplayErrorMessage(), DisplayInfoMessage(), and m_parent.

Referenced by abandonRhiCanvas(), DoRePaint(), handleContextLoss(), recoverFromGalError(), and SwitchBackend().

◆ StartDrawing()

◆ StatusPopupHasFocus()

bool EDA_DRAW_PANEL_GAL::StatusPopupHasFocus ( )
inlineinherited

Definition at line 116 of file class_draw_panel_gal.h.

References m_statusPopup.

◆ StopDrawing()

◆ submitCachedScene()

void EDA_DRAW_PANEL_GAL::submitCachedScene ( )
protectedinherited

Submit the last full scene again with the current camera and cursor, keeping all targets.

Definition at line 581 of file draw_panel_gal.cpp.

References m_dynamicEpoch, m_frameMailbox, m_gal, m_lastFullDynamicDesc, m_lastFullStaticDesc, m_staticEpoch, and s_inputSerial.

Referenced by DoRePaint().

◆ SwitchBackend()

bool EDA_DRAW_PANEL_GAL::SwitchBackend ( GAL_TYPE aGalType)
virtualinherited

Switch method of rendering graphics.

Parameters
aGalTypeis a type of rendering engine that you want to use.

Reimplemented in GERBVIEW_DRAW_PANEL_GAL, PCB_DRAW_PANEL_GAL, PL_DRAW_PANEL_GAL, and SCH_DRAW_PANEL.

Definition at line 1389 of file draw_panel_gal.cpp.

References _, abandonRhiCanvas(), KIGFX::GAL_MODERN::AcquireRenderThread(), KIGFX::ALL, KIGFX::GAL_MODERN::AllocateWindowId(), ARROW, EDA_DRAW_FRAME::CanvasFailed(), KIGFX::OPENGL_GAL::CheckFeatures(), GAL_FALLBACK, GAL_FALLBACK_AVAILABLE, GAL_TYPE_CAIRO, GAL_TYPE_MODERN, GAL_TYPE_NONE, GAL_TYPE_OPENGL, ADVANCED_CFG::GetCfg(), GetVcSettings(), KI_FALLTHROUGH, m_backend, m_contextBindFailures, m_deviceProxy, m_frameMailbox, m_gal, m_linePipelineKind, m_nativeHandleValid, m_needsExternalRenderingSetup, m_options, m_painter, m_pendingResize, m_renderThread, m_swapchainCtrl, m_touchpadGestureHandler, m_view, m_windowId, pad, KIGFX::PCB_TRACKS, KIPLATFORM::UI::PrepareForExternalRendering(), Refresh(), result, ScreenSizePad(), EDA_DRAW_FRAME::SetCanvasFailed(), KIGFX::GAL_MODERN::SetCentringPad(), SetCurrentCursor(), KIGFX::GAL_MODERN::SetDpiScale(), KIGFX::GAL_MODERN::SetRenderThread(), showMessageLater(), StopDrawing(), teardownModernRenderInfra(), traceRhi, UpdateOverlayExclusions(), UpdateTouchpadGestureHandler(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by abandonRhiCanvas(), DoRePaint(), EDA_DRAW_PANEL_GAL(), handleContextLoss(), recoverFromGalError(), GERBVIEW_DRAW_PANEL_GAL::SwitchBackend(), PCB_DRAW_PANEL_GAL::SwitchBackend(), PL_DRAW_PANEL_GAL::SwitchBackend(), SCH_DRAW_PANEL::SwitchBackend(), and EDA_DRAW_FRAME::SwitchCanvas().

◆ teardownModernRenderInfra()

void EDA_DRAW_PANEL_GAL::teardownModernRenderInfra ( )
protectedinherited

Stop the RHI render thread and release its swapchain, mailbox and buffers.

Must run before the GAL_MODERN is destroyed, since in-flight uploads point at its geometry.

Definition at line 390 of file draw_panel_gal.cpp.

References m_deviceProxy, m_frameMailbox, m_gal, m_hasLastFullDrawDesc, m_renderThread, m_swapchainCtrl, and releaseCachedNativeWindowHandle().

Referenced by SwitchBackend(), and ~EDA_DRAW_PANEL_GAL().

◆ UpdateOverlayExclusions()

void EDA_DRAW_PANEL_GAL::UpdateOverlayExclusions ( )
inherited

Tell the backend which areas of this panel are covered by an overlaid infobar.

Must be called whenever an infobar is shown, hidden or moved.

Definition at line 1176 of file draw_panel_gal.cpp.

References GAL_TYPE_OPENGL, m_backend, m_gal, m_overlayInsetTop, Refresh(), and ResizeGal().

Referenced by SwitchBackend().

◆ UpdateTouchpadGestureHandler()

◆ view()

KIGFX::SCH_VIEW * SCH_PREVIEW_PANEL::view ( ) const
protected

Definition at line 133 of file sch_preview_panel.cpp.

References EDA_DRAW_PANEL_GAL::m_view.

Referenced by SCH_PREVIEW_PANEL().

◆ ZoomToFit()

void EDA_DRAW_PANEL_GAL::ZoomToFit ( const BOX2I & aBox,
std::optional< double > aMarginScale = std::nullopt )
inherited

Scale and centre the view on aBox, and fit it again whenever the canvas changes size until something else zooms or pans.

Parameters
aMarginScaleis how much larger than the box the view is. By default a little more on a short canvas, where the infobar covers a larger share.

Definition at line 1046 of file draw_panel_gal.cpp.

References BOX2< Vec >::Centre(), KIGFX::VIEW::GetCenter(), GetDefaultViewBBox(), BOX2< Vec >::GetHeight(), KIGFX::VIEW::GetScale(), BOX2< Vec >::GetSize(), BOX2< Vec >::GetWidth(), m_automaticFit, m_gal, m_view, Refresh(), scale, KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetScale(), ToVECTOR2I(), KIGFX::VIEW::ToWorld(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by onSize().

Member Data Documentation

◆ GAL_FALLBACK

◆ GAL_FALLBACK_AVAILABLE

bool EDA_DRAW_PANEL_GAL::GAL_FALLBACK_AVAILABLE = GAL_FALLBACK != GAL_TYPE_OPENGL
staticconstexprinherited

Definition at line 93 of file class_draw_panel_gal.h.

Referenced by handleContextLoss(), and SwitchBackend().

◆ m_automaticFit

KIGFX::AUTOMATIC_FIT EDA_DRAW_PANEL_GAL::m_automaticFit
protectedinherited

What the last ZoomToFit() left, refitted on a resize until the view is zoomed or panned.

Definition at line 498 of file class_draw_panel_gal.h.

Referenced by onSize(), and ZoomToFit().

◆ m_backend

◆ m_cachedNativeHandle

RHI_NATIVE_WINDOW_HANDLE EDA_DRAW_PANEL_GAL::m_cachedNativeHandle
protectedinherited

Fetching the handle forces a display-server flush, so it is cached between realizations and fetched again only when m_nativeHandleValid is cleared on swapchain recreation.

Definition at line 542 of file class_draw_panel_gal.h.

Referenced by getCachedNativeWindowHandle(), and releaseCachedNativeWindowHandle().

◆ m_contextBindFailures

int EDA_DRAW_PANEL_GAL::m_contextBindFailures
protectedinherited

Consecutive frames dropped because the GL context could not be made current.

Definition at line 504 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), and SwitchBackend().

◆ m_debugOverlay

std::shared_ptr<KIGFX::VIEW_OVERLAY> EDA_DRAW_PANEL_GAL::m_debugOverlay
protectedinherited

Optional overlay for drawing transient debug objects.

Definition at line 562 of file class_draw_panel_gal.h.

Referenced by ClearDebugOverlay(), and DebugOverlay().

◆ m_deviceProxy

std::unique_ptr<KIGFX::RHI_DEVICE_PROXY> EDA_DRAW_PANEL_GAL::m_deviceProxy
protectedinherited

The UI thread's access to the device.

Must be destroyed before m_renderThread.

Definition at line 525 of file class_draw_panel_gal.h.

Referenced by SwitchBackend(), and teardownModernRenderInfra().

◆ m_drawing

bool EDA_DRAW_PANEL_GAL::m_drawing
protectedinherited

True if GAL is currently redrawing the view.

Definition at line 460 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), and ~EDA_DRAW_PANEL_GAL().

◆ m_drawingEnabled

bool EDA_DRAW_PANEL_GAL::m_drawingEnabled
protectedinherited

Flag that determines if VIEW may use GAL for redrawing the screen.

Definition at line 463 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), ForceRefresh(), onRefreshTimer(), and StopDrawing().

◆ m_dynamicEpoch

uint64_t EDA_DRAW_PANEL_GAL::m_dynamicEpoch = 1
protectedinherited

Definition at line 556 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and submitCachedScene().

◆ m_edaFrame

EDA_DRAW_FRAME* EDA_DRAW_PANEL_GAL::m_edaFrame
protectedinherited

◆ m_eventDispatcher

TOOL_DISPATCHER* EDA_DRAW_PANEL_GAL::m_eventDispatcher
protectedinherited

Processes and forwards events to tools.

Definition at line 491 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), OnEvent(), onLostFocus(), and SetEventDispatcher().

◆ m_frameMailbox

std::unique_ptr<KIGFX::FRAME_MAILBOX> EDA_DRAW_PANEL_GAL::m_frameMailbox
protectedinherited

Delivers frame packets to the render thread.

Definition at line 530 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), submitCachedScene(), SwitchBackend(), and teardownModernRenderInfra().

◆ m_gal

◆ m_hasLastFullDrawDesc

bool EDA_DRAW_PANEL_GAL::m_hasLastFullDrawDesc = false
protectedinherited

Definition at line 552 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and teardownModernRenderInfra().

◆ m_lastCursorPosition

VECTOR2D EDA_DRAW_PANEL_GAL::m_lastCursorPosition
protectedinherited

Last cursor position sent to GAL for drawing.

Definition at line 472 of file class_draw_panel_gal.h.

Referenced by DoRePaint().

◆ m_lastFullDynamicDesc

KIGFX::FRAME_DRAW_DESC EDA_DRAW_PANEL_GAL::m_lastFullDynamicDesc
protectedinherited

Definition at line 551 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and submitCachedScene().

◆ m_lastFullStaticDesc

KIGFX::FRAME_DRAW_DESC EDA_DRAW_PANEL_GAL::m_lastFullStaticDesc
protectedinherited

Draw descriptors of the last full redraw, reused by frames that need no new geometry.

Definition at line 550 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and submitCachedScene().

◆ m_lastRepaintEnd

std::chrono::steady_clock::time_point EDA_DRAW_PANEL_GAL::m_lastRepaintEnd
protectedinherited

Timestamp of the last repaint end.

Definition at line 454 of file class_draw_panel_gal.h.

Referenced by DoRePaint().

◆ m_lastRepaintStart

std::chrono::steady_clock::time_point EDA_DRAW_PANEL_GAL::m_lastRepaintStart
protectedinherited

Timestamp of the last repaint start.

Definition at line 453 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and Refresh().

◆ m_linePipelineKind

KIGFX::RHI_LINE_PIPELINE_KIND EDA_DRAW_PANEL_GAL::m_linePipelineKind = KIGFX::RHI_LINE_PIPELINE_KIND::PCB_TRACKS
protectedinherited

Fixed in the constructor from the parent frame's editor.

Definition at line 559 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), and SwitchBackend().

◆ m_lostFocus

bool EDA_DRAW_PANEL_GAL::m_lostFocus
protectedinherited

Flag to indicate that focus should be regained on the next mouse event.

It is a workaround for cases when the panel loses keyboard focus, so it does not react to hotkeys anymore.

Definition at line 495 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), OnEvent(), onLostFocus(), and SetFocus().

◆ m_MouseCapturedLost

bool EDA_DRAW_PANEL_GAL::m_MouseCapturedLost
inherited

used on wxMSW: true after a wxEVT_MOUSE_CAPTURE_LOST was received false after the mouse is recaptured.

Used to avoid calling twice a CaptureMouse(), not accepted by wxMSW

Definition at line 368 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL().

◆ m_nativeHandleValid

bool EDA_DRAW_PANEL_GAL::m_nativeHandleValid = false
protectedinherited

◆ m_needIdleRefresh

bool EDA_DRAW_PANEL_GAL::m_needIdleRefresh
protectedinherited

True when canvas needs to be refreshed from idle handler.

Definition at line 466 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), onIdle(), and RequestRefresh().

◆ m_needsExternalRenderingSetup

bool EDA_DRAW_PANEL_GAL::m_needsExternalRenderingSetup = false
protectedinherited

True until the first paint completes the deferred GTK drawing suppression.

Definition at line 536 of file class_draw_panel_gal.h.

Referenced by presentFrame(), and SwitchBackend().

◆ m_options

KIGFX::GAL_DISPLAY_OPTIONS& EDA_DRAW_PANEL_GAL::m_options
protectedinherited

Definition at line 488 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), and SwitchBackend().

◆ m_overlayInsetTop

int EDA_DRAW_PANEL_GAL::m_overlayInsetTop = 0
protectedinherited

Rows at the top of the panel left to the infobars where the backend window would hide them.

Definition at line 513 of file class_draw_panel_gal.h.

Referenced by backendScreenSize(), ResizeGal(), and UpdateOverlayExclusions().

◆ m_painter

◆ m_PaintEventCounter

std::unique_ptr<PROF_COUNTER> EDA_DRAW_PANEL_GAL::m_PaintEventCounter
inherited

Definition at line 370 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL().

◆ m_parent

wxWindow* EDA_DRAW_PANEL_GAL::m_parent
protectedinherited

Pointer to the parent window.

Definition at line 450 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), IsDialogPreview(), SetCurrentCursor(), and showMessageLater().

◆ m_pendingResize

bool EDA_DRAW_PANEL_GAL::m_pendingResize
protectedinherited

Set when a size change could not be applied because the GL context was unavailable.

Definition at line 510 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), ResizeGal(), and SwitchBackend().

◆ m_rebuiltAfterReset

bool EDA_DRAW_PANEL_GAL::m_rebuiltAfterReset
protectedinherited

The GAL was rebuilt after a GPU reset and has not completed a frame yet.

Definition at line 507 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), handleContextLoss(), and recoverFromGalError().

◆ m_recoveryAttempted

bool EDA_DRAW_PANEL_GAL::m_recoveryAttempted
protectedinherited

Set after a GPU recovery attempt to prevent infinite retry loops.

Definition at line 501 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), EDA_DRAW_PANEL_GAL(), and recoverFromGalError().

◆ m_refreshDeferred

bool EDA_DRAW_PANEL_GAL::m_refreshDeferred = false
protectedinherited

The refresh timer was armed by Refresh() for a repaint it postponed.

Definition at line 469 of file class_draw_panel_gal.h.

Referenced by onRefreshTimer(), and Refresh().

◆ m_refreshMutex

std::mutex EDA_DRAW_PANEL_GAL::m_refreshMutex
protectedinherited

Blocks multiple calls to the draw.

Definition at line 457 of file class_draw_panel_gal.h.

Referenced by DoRePaint().

◆ m_refreshRate

float EDA_DRAW_PANEL_GAL::m_refreshRate = 0.0f
protectedinherited

What displayRefreshRate() last asked the window system.

Definition at line 546 of file class_draw_panel_gal.h.

Referenced by displayRefreshRate().

◆ m_refreshRateAsked

std::chrono::steady_clock::time_point EDA_DRAW_PANEL_GAL::m_refreshRateAsked
protectedinherited

Definition at line 547 of file class_draw_panel_gal.h.

Referenced by displayRefreshRate().

◆ m_refreshTimer

wxTimer EDA_DRAW_PANEL_GAL::m_refreshTimer
protectedinherited

Timer to prevent too-frequent refreshing.

Definition at line 455 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), ForceRefresh(), handleContextLoss(), presentFrame(), Refresh(), StartDrawing(), and StopDrawing().

◆ m_renderThread

std::shared_ptr<KIGFX::RENDER_THREAD> EDA_DRAW_PANEL_GAL::m_renderThread
protectedinherited

The render thread that owns the RHI device, shared by every canvas, see GAL_MODERN::AcquireRenderThread()

Definition at line 522 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), GetScreenshot(), SwitchBackend(), and teardownModernRenderInfra().

◆ m_staticEpoch

uint64_t EDA_DRAW_PANEL_GAL::m_staticEpoch = 1
protectedinherited

Content generations of the static and dynamic pools last submitted, see FRAME_PACKET.

Definition at line 555 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), and submitCachedScene().

◆ m_statusPopup

wxWindow* EDA_DRAW_PANEL_GAL::m_statusPopup
protectedinherited

Definition at line 519 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), SetStatusPopup(), and StatusPopupHasFocus().

◆ m_stealsFocus

bool EDA_DRAW_PANEL_GAL::m_stealsFocus
protectedinherited

Flag to indicate whether the panel should take focus at certain times (when moused over, and on various mouse/key events)

Definition at line 517 of file class_draw_panel_gal.h.

Referenced by EDA_DRAW_PANEL_GAL(), onEnter(), OnEvent(), and SetStealsFocus().

◆ m_swapchainCtrl

std::unique_ptr<KIGFX::SWAPCHAIN_CONTROLLER> EDA_DRAW_PANEL_GAL::m_swapchainCtrl
protectedinherited

◆ m_touchpadGestureHandler

std::unique_ptr<KIPLATFORM::UI::TOUCHPAD_GESTURE_HANDLER> EDA_DRAW_PANEL_GAL::m_touchpadGestureHandler
protectedinherited

◆ m_view

KIGFX::VIEW* EDA_DRAW_PANEL_GAL::m_view
protectedinherited

Stores view settings (scale, center, etc.) and items to be drawn.

Definition at line 478 of file class_draw_panel_gal.h.

Referenced by PCB_DRAW_PANEL_GAL::addRatsnest(), PCB_DRAW_PANEL_GAL::applyHighContrastLayer(), PCB_DRAW_PANEL_GAL::beforeRedraw(), WIDGET_DIFF_CANVAS::CenterOnHighlight(), ClearDebugOverlay(), DebugOverlay(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), DoRePaint(), EDA_DRAW_PANEL_GAL(), GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), GERBVIEW_DRAW_PANEL_GAL::GetDefaultViewBBox(), PCB_DRAW_PANEL_GAL::GetDefaultViewBBox(), GetView(), PCB_DRAW_PANEL_GAL::GetView(), SCH_DRAW_PANEL::GetView(), ZONE_PREVIEW_CANVAS::LockZoom(), WIDGET_DIFF_CANVAS::onDoubleClick(), OnShow(), GERBVIEW_DRAW_PANEL_GAL::OnShow(), PCB_DRAW_PANEL_GAL::OnShow(), onSize(), PCB_DRAW_PANEL_GAL::PCB_DRAW_PANEL_GAL(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), WIDGET_DIFF_CANVAS::rebuildOverlay(), PCB_DRAW_PANEL_GAL::RedrawRatsnest(), WIDGET_DIFF_CANVAS::refreshItemDimming(), ResizeGal(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), WIDGET_DIFF_CANVAS::SetCategoryVisible(), WIDGET_DIFF_CANVAS::SetContextItems(), WIDGET_DIFF_CANVAS::SetContextPainter(), GERBVIEW_DRAW_PANEL_GAL::setDefaultLayerDeps(), PCB_DRAW_PANEL_GAL::setDefaultLayerDeps(), PL_DRAW_PANEL_GAL::setDefaultLayerDeps(), SCH_DRAW_PANEL::setDefaultLayerDeps(), SCH_PREVIEW_PANEL::setDefaultLayerDeps(), PCB_DRAW_PANEL_GAL::setDefaultLayerOrder(), SCH_DRAW_PANEL::setDefaultLayerOrder(), SCH_PREVIEW_PANEL::setDefaultLayerOrder(), GERBVIEW_DRAW_PANEL_GAL::SetDrawingSheet(), PCB_DRAW_PANEL_GAL::SetDrawingSheet(), SetHighContrastLayer(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), WIDGET_DIFF_CANVAS::SetItemCategories(), WIDGET_DIFF_CANVAS::SetLayerVisible(), SetTopLayer(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), PL_DRAW_PANEL_GAL::SetTopLayer(), WIDGET_DIFF_CANVAS::shapeAt(), SwitchBackend(), GERBVIEW_DRAW_PANEL_GAL::SwitchBackend(), PCB_DRAW_PANEL_GAL::SwitchBackend(), PCB_DRAW_PANEL_GAL::SyncLayersVisibility(), PCB_DRAW_PANEL_GAL::updateCanvasFadedLayers(), PCB_DRAW_PANEL_GAL::UpdateColors(), SCH_PREVIEW_PANEL::view(), WIDGET_DIFF_CANVAS::WIDGET_DIFF_CANVAS(), ZONE_PREVIEW_CANVAS::ZONE_PREVIEW_CANVAS(), ZONE_PREVIEW_CANVAS::ZoomFitScreen(), WIDGET_DIFF_CANVAS::ZoomToBBox(), ZoomToFit(), ~EDA_DRAW_PANEL_GAL(), and WIDGET_DIFF_CANVAS::~WIDGET_DIFF_CANVAS().

◆ m_viewControls

◆ m_windowId

uint32_t EDA_DRAW_PANEL_GAL::m_windowId = 0
protectedinherited

Routes this window's work on the render thread.

Definition at line 533 of file class_draw_panel_gal.h.

Referenced by DoRePaint(), ForceRefresh(), GetScreenshot(), onIdle(), onShowEvent(), presentFrame(), StartDrawing(), SwitchBackend(), and ~EDA_DRAW_PANEL_GAL().


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