mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 01:45:36 +00:00
gpu,op/clip: [compute] get rid of stroke vs fill flags
The fill mode is now controlled by a SetFillMode command, not by flags on each path segment and fill command. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
+56
-65
@@ -14,7 +14,7 @@ struct CubicSegRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
struct FillRef {
|
||||
struct FillColorRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
@@ -22,10 +22,6 @@ struct FillImageRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
struct StrokeRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
struct SetLineWidthRef {
|
||||
uint offset;
|
||||
};
|
||||
@@ -38,6 +34,10 @@ struct ClipRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
struct SetFillModeRef {
|
||||
uint offset;
|
||||
};
|
||||
|
||||
struct ElementRef {
|
||||
uint offset;
|
||||
};
|
||||
@@ -78,14 +78,14 @@ CubicSegRef CubicSeg_index(CubicSegRef ref, uint index) {
|
||||
return CubicSegRef(ref.offset + index * CubicSeg_size);
|
||||
}
|
||||
|
||||
struct Fill {
|
||||
struct FillColor {
|
||||
uint rgba_color;
|
||||
};
|
||||
|
||||
#define Fill_size 4
|
||||
#define FillColor_size 4
|
||||
|
||||
FillRef Fill_index(FillRef ref, uint index) {
|
||||
return FillRef(ref.offset + index * Fill_size);
|
||||
FillColorRef FillColor_index(FillColorRef ref, uint index) {
|
||||
return FillColorRef(ref.offset + index * FillColor_size);
|
||||
}
|
||||
|
||||
struct FillImage {
|
||||
@@ -99,16 +99,6 @@ FillImageRef FillImage_index(FillImageRef ref, uint index) {
|
||||
return FillImageRef(ref.offset + index * FillImage_size);
|
||||
}
|
||||
|
||||
struct Stroke {
|
||||
uint rgba_color;
|
||||
};
|
||||
|
||||
#define Stroke_size 4
|
||||
|
||||
StrokeRef Stroke_index(StrokeRef ref, uint index) {
|
||||
return StrokeRef(ref.offset + index * Stroke_size);
|
||||
}
|
||||
|
||||
struct SetLineWidth {
|
||||
float width;
|
||||
};
|
||||
@@ -140,26 +130,38 @@ ClipRef Clip_index(ClipRef ref, uint index) {
|
||||
return ClipRef(ref.offset + index * Clip_size);
|
||||
}
|
||||
|
||||
struct SetFillMode {
|
||||
uint fill_mode;
|
||||
};
|
||||
|
||||
#define SetFillMode_size 4
|
||||
|
||||
SetFillModeRef SetFillMode_index(SetFillModeRef ref, uint index) {
|
||||
return SetFillModeRef(ref.offset + index * SetFillMode_size);
|
||||
}
|
||||
|
||||
#define Element_Nop 0
|
||||
#define Element_StrokeLine 1
|
||||
#define Element_FillLine 2
|
||||
#define Element_StrokeQuad 3
|
||||
#define Element_FillQuad 4
|
||||
#define Element_StrokeCubic 5
|
||||
#define Element_FillCubic 6
|
||||
#define Element_Stroke 7
|
||||
#define Element_Fill 8
|
||||
#define Element_SetLineWidth 9
|
||||
#define Element_Transform 10
|
||||
#define Element_BeginClip 11
|
||||
#define Element_EndClip 12
|
||||
#define Element_FillImage 13
|
||||
#define Element_Line 1
|
||||
#define Element_Quad 2
|
||||
#define Element_Cubic 3
|
||||
#define Element_FillColor 4
|
||||
#define Element_SetLineWidth 5
|
||||
#define Element_Transform 6
|
||||
#define Element_BeginClip 7
|
||||
#define Element_EndClip 8
|
||||
#define Element_FillImage 9
|
||||
#define Element_SetFillMode 10
|
||||
#define Element_size 36
|
||||
|
||||
ElementRef Element_index(ElementRef ref, uint index) {
|
||||
return ElementRef(ref.offset + index * Element_size);
|
||||
}
|
||||
|
||||
struct ElementTag {
|
||||
uint tag;
|
||||
uint flags;
|
||||
};
|
||||
|
||||
LineSeg LineSeg_read(LineSegRef ref) {
|
||||
uint ix = ref.offset >> 2;
|
||||
uint raw0 = scene[ix + 0];
|
||||
@@ -205,10 +207,10 @@ CubicSeg CubicSeg_read(CubicSegRef ref) {
|
||||
return s;
|
||||
}
|
||||
|
||||
Fill Fill_read(FillRef ref) {
|
||||
FillColor FillColor_read(FillColorRef ref) {
|
||||
uint ix = ref.offset >> 2;
|
||||
uint raw0 = scene[ix + 0];
|
||||
Fill s;
|
||||
FillColor s;
|
||||
s.rgba_color = raw0;
|
||||
return s;
|
||||
}
|
||||
@@ -223,14 +225,6 @@ FillImage FillImage_read(FillImageRef ref) {
|
||||
return s;
|
||||
}
|
||||
|
||||
Stroke Stroke_read(StrokeRef ref) {
|
||||
uint ix = ref.offset >> 2;
|
||||
uint raw0 = scene[ix + 0];
|
||||
Stroke s;
|
||||
s.rgba_color = raw0;
|
||||
return s;
|
||||
}
|
||||
|
||||
SetLineWidth SetLineWidth_read(SetLineWidthRef ref) {
|
||||
uint ix = ref.offset >> 2;
|
||||
uint raw0 = scene[ix + 0];
|
||||
@@ -264,40 +258,33 @@ Clip Clip_read(ClipRef ref) {
|
||||
return s;
|
||||
}
|
||||
|
||||
uint Element_tag(ElementRef ref) {
|
||||
return scene[ref.offset >> 2];
|
||||
SetFillMode SetFillMode_read(SetFillModeRef ref) {
|
||||
uint ix = ref.offset >> 2;
|
||||
uint raw0 = scene[ix + 0];
|
||||
SetFillMode s;
|
||||
s.fill_mode = raw0;
|
||||
return s;
|
||||
}
|
||||
|
||||
LineSeg Element_StrokeLine_read(ElementRef ref) {
|
||||
ElementTag Element_tag(ElementRef ref) {
|
||||
uint tag_and_flags = scene[ref.offset >> 2];
|
||||
return ElementTag(tag_and_flags & 0xffff, tag_and_flags >> 16);
|
||||
}
|
||||
|
||||
LineSeg Element_Line_read(ElementRef ref) {
|
||||
return LineSeg_read(LineSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
LineSeg Element_FillLine_read(ElementRef ref) {
|
||||
return LineSeg_read(LineSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
QuadSeg Element_StrokeQuad_read(ElementRef ref) {
|
||||
QuadSeg Element_Quad_read(ElementRef ref) {
|
||||
return QuadSeg_read(QuadSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
QuadSeg Element_FillQuad_read(ElementRef ref) {
|
||||
return QuadSeg_read(QuadSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
CubicSeg Element_StrokeCubic_read(ElementRef ref) {
|
||||
CubicSeg Element_Cubic_read(ElementRef ref) {
|
||||
return CubicSeg_read(CubicSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
CubicSeg Element_FillCubic_read(ElementRef ref) {
|
||||
return CubicSeg_read(CubicSegRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
Stroke Element_Stroke_read(ElementRef ref) {
|
||||
return Stroke_read(StrokeRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
Fill Element_Fill_read(ElementRef ref) {
|
||||
return Fill_read(FillRef(ref.offset + 4));
|
||||
FillColor Element_FillColor_read(ElementRef ref) {
|
||||
return FillColor_read(FillColorRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
SetLineWidth Element_SetLineWidth_read(ElementRef ref) {
|
||||
@@ -320,3 +307,7 @@ FillImage Element_FillImage_read(ElementRef ref) {
|
||||
return FillImage_read(FillImageRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
SetFillMode Element_SetFillMode_read(ElementRef ref) {
|
||||
return SetFillMode_read(SetFillModeRef(ref.offset + 4));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user