Set up a system for brushes.
This commit is contained in:
parent
ed340dc017
commit
4d39f77dbc
|
@ -36,15 +36,26 @@ struct uiAreaDrawParams {
|
||||||
intmax_t VScrollPos;
|
intmax_t VScrollPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO proper sources
|
|
||||||
// TODO dotting/dashing
|
// TODO dotting/dashing
|
||||||
|
|
||||||
typedef struct uiDrawPath uiDrawPath;
|
typedef struct uiDrawPath uiDrawPath;
|
||||||
|
typedef struct uiDrawBrush uiDrawBrush;
|
||||||
typedef struct uiDrawStrokeParams uiDrawStrokeParams;
|
typedef struct uiDrawStrokeParams uiDrawStrokeParams;
|
||||||
|
|
||||||
|
typedef enum uiDrawBrushType uiDrawBrushType;
|
||||||
|
typedef struct uiDrawBrushGradientStop uiDrawBrushGradientStop;
|
||||||
|
|
||||||
typedef enum uiDrawLineCap uiDrawLineCap;
|
typedef enum uiDrawLineCap uiDrawLineCap;
|
||||||
typedef enum uiDrawLineJoin uiDrawLineJoin;
|
typedef enum uiDrawLineJoin uiDrawLineJoin;
|
||||||
typedef enum uiDrawFillMode uiDrawFillMode;
|
typedef enum uiDrawFillMode uiDrawFillMode;
|
||||||
|
|
||||||
|
enum uiDrawBrushType {
|
||||||
|
uiDrawBrushTypeSolid,
|
||||||
|
/*TODO uiDrawBrushTypeLinearGradient,
|
||||||
|
uiDrawBrushTypeRadialGradient,
|
||||||
|
uiDrawBrushTypeImage,
|
||||||
|
*/};
|
||||||
|
|
||||||
enum uiDrawLineCap {
|
enum uiDrawLineCap {
|
||||||
uiDrawLineCapFlat,
|
uiDrawLineCapFlat,
|
||||||
uiDrawLineCapRound,
|
uiDrawLineCapRound,
|
||||||
|
@ -67,6 +78,35 @@ enum uiDrawFillMode {
|
||||||
uiDrawFillModeAlternate,
|
uiDrawFillModeAlternate,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct uiDrawBrush {
|
||||||
|
uiDrawBrushType Type;
|
||||||
|
|
||||||
|
// solid brushes
|
||||||
|
double R;
|
||||||
|
double G;
|
||||||
|
double B;
|
||||||
|
double A;
|
||||||
|
|
||||||
|
// gradient brushes
|
||||||
|
double X0; // linear: start X, radial: start X
|
||||||
|
double Y0; // linear: start Y, radial: start Y
|
||||||
|
double X1; // linear: end X, radial: outer circle center X
|
||||||
|
double Y1; // linear: end Y, radial: outer circle center Y
|
||||||
|
double OuterRadius; // radial gradients only
|
||||||
|
uiDrawBrushGradientStop *Stops;
|
||||||
|
size_t NumStops;
|
||||||
|
|
||||||
|
// TODO images
|
||||||
|
};
|
||||||
|
|
||||||
|
struct uiDrawBrushGradientStop {
|
||||||
|
double Pos;
|
||||||
|
double R;
|
||||||
|
double G;
|
||||||
|
double B;
|
||||||
|
double A;
|
||||||
|
};
|
||||||
|
|
||||||
struct uiDrawStrokeParams {
|
struct uiDrawStrokeParams {
|
||||||
uiDrawLineCap Cap;
|
uiDrawLineCap Cap;
|
||||||
uiDrawLineJoin Join;
|
uiDrawLineJoin Join;
|
||||||
|
@ -91,8 +131,8 @@ void uiDrawPathAddRectangle(uiDrawPath *, double, double, double, double);
|
||||||
|
|
||||||
void uiDrawPathEnd(uiDrawPath *);
|
void uiDrawPathEnd(uiDrawPath *);
|
||||||
|
|
||||||
void uiDrawStroke(uiDrawContext *, uiDrawPath *, uiDrawStrokeParams *);
|
void uiDrawStroke(uiDrawContext *, uiDrawPath *, uiDrawBrush *, uiDrawStrokeParams *);
|
||||||
void uiDrawFill(uiDrawContext *, uiDrawPath *);
|
void uiDrawFill(uiDrawContext *, uiDrawPath *, uiDrawBrush *);
|
||||||
|
|
||||||
// TODO primitives:
|
// TODO primitives:
|
||||||
// - rounded rectangles
|
// - rounded rectangles
|
||||||
|
|
Loading…
Reference in New Issue