wxBufferedDC(3erl)

πŸ’– wxBufferedDC β€” Erlang Module Definition πŸ’–

okay bestie, welcome to the wxBufferedDC(3erl) page β€” yes, that’s the manual name, and yes, we’re gonna get through it together. Functions for the wxBufferedDC class are right below, and I promise it’s giving β€œflicker-free main character energy,” not β€œcryptic C++ jump scare.” ✨


🌸 NAME 🌸

wxBufferedDC β€” Functions for wxBufferedDC class


✨ DESCRIPTION ✨

Okay so picture this: this class is the lowkey hero for avoiding flicker. When you draw on it, everything is actually drawn first on an in-memory buffer (a wxBitmap) and then copied to the screen using the associated wxDC β€” only once, when this object is destroyed. Slay. πŸ’…

wxBufferedDC itself is typically associated with wxClientDC. If you want to use it in your EVT_PAINT handler, you should look at wxBufferedPaintDC instead. iykyk, different vibe. πŸ¦‹

When used like this, a valid DC must be specified in the constructor, while the buffer bitmap doesn’t have to be explicitly provided β€” by default this class will allocate the bitmap of required size itself. However, using a dedicated bitmap can speed up the redrawing process by eliminating the repeated creation and destruction of a possibly big bitmap. Otherwise, wxBufferedDC can be used in the same way as any other device context. No cap. ✨

Another possible use for wxBufferedDC is to use it to maintain a backing store for the window contents. In this case, the associated DC may be NULL but a valid backing store bitmap should be specified. Very specific, very important. πŸŽ€

Finally, please note that GTK+ 2.0 as well as macOS provide double buffering themselves natively. You can either use wxWindow:isDoubleBuffered/1 to determine whether you need to use buffering or not, or use wxAutoBufferedPaintDC (not implemented in wx) to avoid needless double buffering on the systems which already do it automatically. 🌈

See: wxDC, wxMemoryDC, wxBufferedPaintDC, wxAutoBufferedPaintDC (not implemented in wx)

This class is derived (and can use functions) from: wxMemoryDC wxDC

wxWidgets docs: wxBufferedDC


πŸ’– DATA TYPES πŸ’–

  • wxBufferedDC() = wx:wx_object()

🫢 EXPORTS 🫢

new() -> wxBufferedDC()

Default constructor.

You must call one of the init/4 methods later in order to use the device context.

new(Dc) -> wxBufferedDC()

Types:

Dc = wxDC:wxDC()

new(Dc, Area) -> wxBufferedDC()

This one is listed with no extra type block in the original β€” just the signature, bestie.

new(Dc, Area :: [Option]) -> wxBufferedDC()

Types:

Dc = wxDC:wxDC()
Option = {buffer, wxBitmap:wxBitmap()} | {style, integer()}

Creates a buffer for the provided dc.

init/4 must not be called when using this constructor.

new(Dc, Area, Options :: [Option]) -> wxBufferedDC()

Types:

Dc = wxDC:wxDC()
Area = {W :: integer(), H :: integer()}
Option = {style, integer()}

Creates a buffer for the provided dc.

init/4 must not be called when using this constructor.

destroy(This :: wxBufferedDC()) -> ok

Copies everything drawn on the DC so far to the underlying DC associated with this object, if any.

init(This, Dc) -> ok

Types:

This = wxBufferedDC()
Dc = wxDC:wxDC()

init(This, Dc, Area) -> ok

No extra type block listed here in the original β€” the signature is the whole moment. πŸ’…

init(This, Dc, Area :: [Option]) -> ok

Types:

This = wxBufferedDC()
Dc = wxDC:wxDC()
Option = {buffer, wxBitmap:wxBitmap()} | {style, integer()}

init(This, Dc, Area, Options :: [Option]) -> ok

Types:

This = wxBufferedDC()
Dc = wxDC:wxDC()
Area = {W :: integer(), H :: integer()}
Option = {style, integer()}

Initializes the object created using the default constructor.

Please see the constructors for parameter details.


πŸ’– big shoutout to the wxWidgets team β€” this is the wx 2.2.2.1 edition of wxBufferedDC(3erl), and the footer didn’t give us a date, so no cap: no date listed. 🫢✨

πŸ“¦ where this page comes from