From a85d41c53eed50f188502925ed34674397b86550 Mon Sep 17 00:00:00 2001 From: Arisotura Date: Sat, 25 Apr 2020 18:51:08 +0200 Subject: berp. --- src/libui_sdl/libui/doc/area.md | 53 ----------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 src/libui_sdl/libui/doc/area.md (limited to 'src/libui_sdl/libui/doc/area.md') diff --git a/src/libui_sdl/libui/doc/area.md b/src/libui_sdl/libui/doc/area.md deleted file mode 100644 index d14be9c..0000000 --- a/src/libui_sdl/libui/doc/area.md +++ /dev/null @@ -1,53 +0,0 @@ -# uiArea - -uiArea is a uiControl that provides a canvas you can draw on. It receives keyboard and mouse events, supports scrolling, is DPI aware, and has several other useful features. A uiArea consists of the drawing area itself and horizontal and vertical scrollbars. - -## The Area Handler - -A uiArea is driven by an *area handler*. An area handler is an object with several methods that uiArea calls to do certain tasks. To create an area handler, simply have a structure whose first member is of type `uiAreaHandler`: - -```c -struct uiAreaHandler { - void (*Draw)(uiAreaHandler *h, uiArea *a, uiAreaDrawParams *p); - void (*HScrollConfig)(uiAreaHandler *h, uiArea *a, uiAreaScrollConfig *c); - void (*VScrollConfig)(uiAreaHandler *h, uiArea *a, uiAreaScrollConfig *c); -} -``` - -## Drawing - -Unlike drawing canvas controls in other toolkits, uiArea does **not** have a fixed size. The coordinate (0, 0) is always the top-left corner of the drawing area, regardless of how big the uiArea is in the current window or where the scrollbars presently are. Instead, you simulate a size by setting the scrollbar bounds, and you are given the current scrolling positions to base your drawing with. - -The visible drawing area is called the *content area* by the drawing machinery. - -TODO have a diagram. - -When a part of the uiArea needs to be redrawn, the area handler's `Draw()` method is called. It receives the area handler, the uiArea, and a structure of parameters necessary for drawing. - -```c -struct uiAreaDrawParams { - uiDrawContext *context; - - intmax_t contentWidth; - intmax_t contentHeight; - - intmax_t hscrollpos; - intmax_t vscrollpos; - - intmax_t clipX; - intmax_t cilpY; - intmax_t clipWidth; - intmax_t clipHeight; - - TODO dpiX; - TODO dpiY; -}; -``` - -`context` is the drawing context; see drawing.md for details. - -`contentWidth` and `contentHeight` is the current width and height of the content area. `hscrollpos` and `vscrollpos` are the current horizontal and vertical positions of the scrollbars, in units defined by the scrollbar configurations; see below. - -`clipX`, `clipY`, `clipWidth`, and `clipHeight` define a rectangle, in content area coordinates, that the OS has requested to be redrawn. You can use this to optimize your drawing by only drawing where drawing is needed; the OS may choose to drop any drawing done outside the clip rectangle. - -`dpiX` and `dpiY` are the uiArea's current DPI in the X and Y directions, respectively. Do not save these values; they are not guaranteed to stay the same once `Draw()` returns. -- cgit v1.2.3