diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
commit | 9e3c08db40b8916968b9f30096c7be3f00ce9647 (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /gfx/src/AAStroke.h | |
parent | Initial commit. (diff) | |
download | thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.tar.xz thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/src/AAStroke.h')
-rw-r--r-- | gfx/src/AAStroke.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gfx/src/AAStroke.h b/gfx/src/AAStroke.h new file mode 100644 index 0000000000..685cf60647 --- /dev/null +++ b/gfx/src/AAStroke.h @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZILLA_GFX_AA_STROKE_H +#define MOZILLA_GFX_AA_STROKE_H + +#include <stddef.h> + +namespace AAStroke { + +enum class LineCap { Round, Square, Butt }; +enum class LineJoin { Round, Miter, Bevel }; +struct StrokeStyle { + float width; + LineCap cap; + LineJoin join; + float miter_limit; +}; +struct Stroker; +struct OutputVertex { + float x; + float y; + float coverage; +}; +struct VertexBuffer { + OutputVertex* data; + size_t len; +}; + +extern "C" { +Stroker* aa_stroke_new(const StrokeStyle* style, + OutputVertex* output_ptr = nullptr, + size_t output_capacity = 0); +void aa_stroke_move_to(Stroker* s, float x, float y, bool closed); +void aa_stroke_line_to(Stroker* s, float x, float y, bool end); +void aa_stroke_curve_to(Stroker* s, float c1x, float c1y, float c2x, float c2y, + float x, float y, bool end); +void aa_stroke_close(Stroker* s); +VertexBuffer aa_stroke_finish(Stroker* s); +void aa_stroke_vertex_buffer_release(VertexBuffer vb); +void aa_stroke_release(Stroker* s); +}; + +} // namespace AAStroke + +#endif // MOZILLA_GFX_AA_STROKE_H |