PatchworkOS
Loading...
Searching...
No Matches
drawable.h
Go to the documentation of this file.
1#ifndef PATCHWORK_DRAW_H
2#define PATCHWORK_DRAW_H 1
3
4#include "cmd.h"
5#include "font.h"
6#include "pixel.h"
7#include "polygon.h"
8#include "rect.h"
9#include "surface.h"
10
11#include <stdint.h>
12
13#if defined(__cplusplus)
14extern "C"
15{
16#endif
17
18typedef struct image image_t;
19
42
47typedef enum
48{
52} align_t;
53
64
74void draw_rect(drawable_t* draw, const rect_t* rect, pixel_t pixel);
75
86void draw_polygon(drawable_t* draw, const point_t* points, uint64_t pointCount, pixel_t pixel);
87
99void draw_line(drawable_t* draw, const point_t* start, const point_t* end, pixel_t pixel, uint32_t thickness);
100
115void draw_frame(drawable_t* draw, const rect_t* rect, uint64_t width, pixel_t foreground, pixel_t background);
116
128void draw_dashed_outline(drawable_t* draw, const rect_t* rect, pixel_t pixel, uint32_t length, int32_t width);
129
140void draw_bezel(drawable_t* draw, const rect_t* rect, uint64_t width, pixel_t pixel);
141
154void draw_gradient(drawable_t* draw, const rect_t* rect, pixel_t start, pixel_t end, direction_t direction,
155 bool shouldAddNoise);
156
165void draw_transfer(drawable_t* dest, drawable_t* src, const rect_t* destRect, const point_t* srcPoint);
166
175void draw_transfer_blend(drawable_t* dest, drawable_t* src, const rect_t* destRect, const point_t* srcPoint);
176
185void draw_image(drawable_t* draw, image_t* image, const rect_t* destRect, const point_t* srcPoint);
186
195void draw_image_blend(drawable_t* draw, image_t* image, const rect_t* destRect, const point_t* srcPoint);
196
209void draw_string(drawable_t* draw, const font_t* font, const point_t* point, pixel_t pixel, const char* string,
210 uint64_t length);
211
225void draw_text(drawable_t* draw, const rect_t* rect, const font_t* font, align_t xAlign, align_t yAlign, pixel_t pixel,
226 const char* text);
227
241void draw_text_multiline(drawable_t* draw, const rect_t* rect, const font_t* font, align_t xAlign, align_t yAlign,
242 pixel_t pixel, const char* text);
243
257void draw_ridge(drawable_t* draw, const rect_t* rect, uint64_t width, pixel_t foreground, pixel_t background);
258
270void draw_separator(drawable_t* draw, const rect_t* rect, pixel_t highlight, pixel_t shadow, direction_t direction);
271
282void draw_invalidate(drawable_t* draw, const rect_t* rect);
283
286#if defined(__cplusplus)
287}
288#endif
289
290#endif
void draw_text_multiline(drawable_t *draw, const rect_t *rect, const font_t *font, align_t xAlign, align_t yAlign, pixel_t pixel, const char *text)
Draw multiline text to a drawable.
Definition drawable.c:814
void draw_line(drawable_t *draw, const point_t *start, const point_t *end, pixel_t pixel, uint32_t thickness)
Draw a line between two points.
Definition drawable.c:179
align_t
Alignment type.
Definition drawable.h:48
void draw_transfer_blend(drawable_t *dest, drawable_t *src, const rect_t *destRect, const point_t *srcPoint)
Transfer pixels from one drawable to another with alpha blending.
Definition drawable.c:507
void draw_polygon(drawable_t *draw, const point_t *points, uint64_t pointCount, pixel_t pixel)
Draw a filled polygon.
Definition drawable.c:48
void draw_gradient(drawable_t *draw, const rect_t *rect, pixel_t start, pixel_t end, direction_t direction, bool shouldAddNoise)
Draw a gradient filled rectangle.
Definition drawable.c:382
void draw_string(drawable_t *draw, const font_t *font, const point_t *point, pixel_t pixel, const char *string, uint64_t length)
Draw a string.
Definition drawable.c:591
void draw_image_blend(drawable_t *draw, image_t *image, const rect_t *destRect, const point_t *srcPoint)
Draw an image with alpha blending.
Definition drawable.c:550
void draw_rect(drawable_t *draw, const rect_t *rect, pixel_t pixel)
Draw a filled rectangle.
Definition drawable.c:7
void draw_ridge(drawable_t *draw, const rect_t *rect, uint64_t width, pixel_t foreground, pixel_t background)
Draw a ridge effect.
Definition drawable.c:994
void draw_image(drawable_t *draw, image_t *image, const rect_t *destRect, const point_t *srcPoint)
Draw an image,.
Definition drawable.c:545
void draw_separator(drawable_t *draw, const rect_t *rect, pixel_t highlight, pixel_t shadow, direction_t direction)
Draw a separator line.
Definition drawable.c:1008
void draw_transfer(drawable_t *dest, drawable_t *src, const rect_t *destRect, const point_t *srcPoint)
Transfer pixels from one drawable to another.
Definition drawable.c:462
void draw_text(drawable_t *draw, const rect_t *rect, const font_t *font, align_t xAlign, align_t yAlign, pixel_t pixel, const char *text)
Draw text to a drawable.
Definition drawable.c:669
void draw_dashed_outline(drawable_t *draw, const rect_t *rect, pixel_t pixel, uint32_t length, int32_t width)
Draw a dashed outline just inside the given rectangle.
Definition drawable.c:259
direction_t
Direction type.
Definition drawable.h:59
void draw_bezel(drawable_t *draw, const rect_t *rect, uint64_t width, pixel_t pixel)
Draw a filled border bezel just inside the given rectangle.
Definition drawable.c:339
void draw_invalidate(drawable_t *draw, const rect_t *rect)
Invalidate a rectangle in the drawable.
Definition drawable.c:1062
void draw_frame(drawable_t *draw, const rect_t *rect, uint64_t width, pixel_t foreground, pixel_t background)
Draw a skeuomorphic frame.
Definition drawable.c:204
@ ALIGN_MIN
Definition drawable.h:51
@ ALIGN_CENTER
Definition drawable.h:49
@ ALIGN_MAX
Definition drawable.h:50
@ DIRECTION_DIAGONAL
Definition drawable.h:62
@ DIRECTION_HORIZONTAL
Definition drawable.h:61
@ DIRECTION_VERTICAL
Definition drawable.h:60
uint32_t pixel_t
Definition pixel.h:11
static image_t * image
Definition main.c:5
static void start()
Definition main.c:542
__UINT32_TYPE__ uint32_t
Definition stdint.h:15
__INT32_TYPE__ int32_t
Definition stdint.h:14
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
Opaque display structure.
Definition internal.h:61
Drawable structure.
Definition drawable.h:35
pixel_t * buffer
Definition drawable.h:38
uint32_t stride
Definition drawable.h:37
rect_t contentRect
Definition drawable.h:39
display_t * disp
Definition drawable.h:36
rect_t invalidRect
Definition drawable.h:40
Definition rect.h:13