17#ifndef DGL_NANO_WIDGET_HPP_INCLUDED
18#define DGL_NANO_WIDGET_HPP_INCLUDED
22#include "SubWidget.hpp"
23#include "TopLevelWidget.hpp"
24#include "StandaloneWindow.hpp"
28# pragma warning(disable:4661)
31#ifndef DGL_NO_SHARED_RESOURCES
32# define NANOVG_DEJAVU_SANS_TTF "__daf_dejavusans_ttf__"
53NVGcontext* nvgCreateGL(
int flags);
75 Handle(NVGcontext* c,
int id) noexcept
129 DAF_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
NanoImage)
249 IMAGE_GENERATE_MIPMAPS = 1 << 0,
250 IMAGE_REPEAT_X = 1 << 1,
251 IMAGE_REPEAT_Y = 1 << 2,
252 IMAGE_FLIP_Y = 1 << 3,
253 IMAGE_PREMULTIPLIED = 1 << 4
259 ALIGN_CENTER = 1 << 1,
260 ALIGN_RIGHT = 1 << 2,
263 ALIGN_MIDDLE = 1 << 4,
264 ALIGN_BOTTOM = 1 << 5,
265 ALIGN_BASELINE = 1 << 6
300 Paint(
const NVGpaint&)
noexcept;
301 operator NVGpaint()
const noexcept;
349 void beginFrame(
const uint width,
const uint height,
const float scaleFactor = 1.0f);
397 void strokeColor(
const int red,
const int green,
const int blue,
const int alpha = 255);
403 void strokeColor(
const float red,
const float green,
const float blue,
const float alpha = 1.0f);
419 void fillColor(
const int red,
const int green,
const int blue,
const int alpha = 255);
425 void fillColor(
const float red,
const float green,
const float blue,
const float alpha = 1.0f);
481 void transform(
float a,
float b,
float c,
float d,
float e,
float f);
569 static void transformPoint(
float& dstx,
float& dsty,
const float xform[6],
float srcx,
float srcy);
612 ImageFlags imageFlags, ImageFormat format);
620 int imageFlags, ImageFormat format);
686 void scissor(
float x,
float y,
float w,
float h);
724 void bezierTo(
float c1x,
float c1y,
float c2x,
float c2y,
float x,
float y);
729 void quadTo(
float cx,
float cy,
float x,
float y);
734 void arcTo(
float x1,
float y1,
float x2,
float y2,
float radius);
751 void arc(
float cx,
float cy,
float r,
float a0,
float a1, Winding dir);
756 void rect(
float x,
float y,
float w,
float h);
766 void ellipse(
float cx,
float cy,
float rx,
float ry);
771 void circle(
float cx,
float cy,
float r);
848 float text(
float x,
float y,
const char*
string,
const char* end);
856 void textBox(
float x,
float y,
float breakRowWidth,
const char*
string,
const char* end =
nullptr);
870 void textBoxBounds(
float x,
float y,
float breakRowWidth,
const char*
string,
const char* end,
float bounds[4]);
882 void textMetrics(
float* ascender,
float* descender,
float* lineh);
891#ifndef DGL_NO_SHARED_RESOURCES
899 NVGcontext* fContext;
904 template <
class BaseW
idget>
friend class NanoBaseWidget;
906 DAF_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
NanoVG)
919template <
class BaseW
idget>
1001 void onDisplay() override;
1004 void beginFrame(uint,uint) {}
1005 void beginFrame(uint,uint,
float) {}
1006 void beginFrame(Widget*) {}
1007 void cancelFrame() {}
1011 const bool fUsingParentContext;
1013 void displayChildren();
1014 friend class NanoBaseWidget<TopLevelWidget>;
1015 friend class NanoBaseWidget<StandaloneWindow>;
1017 DAF_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(NanoBaseWidget)
1020typedef NanoBaseWidget<SubWidget> NanoSubWidget;
1021typedef NanoBaseWidget<TopLevelWidget> NanoTopLevelWidget;
1022typedef NanoBaseWidget<StandaloneWindow> NanoStandaloneWindow;
1024DAF_DEPRECATED_BY(
"NanoSubWidget")
1025typedef NanoSubWidget NanoWidget;
1032# pragma warning(pop)
Definition Application.hpp:90
void update(const uchar *data)
GLuint getTextureHandle() const
bool isValid() const noexcept
Size< uint > getSize() const noexcept
NanoImage & operator=(const Handle &handle)
NanoImage(const Handle &handle)
Definition NanoVG.hpp:228
Paint imagePattern(float ox, float oy, float ex, float ey, float angle, const NanoImage &image, float alpha)
static void transformTranslate(float dst[6], float tx, float ty)
void intersectScissor(float x, float y, float w, float h)
static void transformPremultiply(float dst[6], const float src[6])
Paint boxGradient(float x, float y, float w, float h, float r, float f, const Color &icol, const Color &ocol)
void textBox(float x, float y, float breakRowWidth, const char *string, const char *end=nullptr)
static float radToDeg(float rad)
static void transformSkewX(float dst[6], float a)
Paint radialGradient(float cx, float cy, float inr, float outr, const Color &icol, const Color &ocol)
void rect(float x, float y, float w, float h)
FontId createFontFromFile(const char *name, const char *filename)
void ellipse(float cx, float cy, float rx, float ry)
virtual bool loadSharedResources()
void strokeColor(const float red, const float green, const float blue, const float alpha=1.0f)
void fontFace(const char *font)
void fontSize(float size)
float textBounds(float x, float y, const char *string, const char *end, Rectangle< float > &bounds)
NanoImage::Handle createImageFromFile(const char *filename, ImageFlags imageFlags)
void fontFaceId(FontId font)
FontId createFontFromMemory(const char *name, const uchar *data, uint dataSize, bool freeData)
NanoVG(NVGcontext *context)
NanoImage::Handle createImageFromRawMemory(uint w, uint h, const uchar *data, ImageFlags imageFlags, ImageFormat format)
void fillColor(const float red, const float green, const float blue, const float alpha=1.0f)
void strokeWidth(float size)
static void transformMultiply(float dst[6], const float src[6])
static void transformRotate(float dst[6], float a)
void bezierTo(float c1x, float c1y, float c2x, float c2y, float x, float y)
void textBoxBounds(float x, float y, float breakRowWidth, const char *string, const char *end, float bounds[4])
CreateFlags
Definition NanoVG.hpp:230
@ CREATE_ANTIALIAS
Definition NanoVG.hpp:234
@ CREATE_STENCIL_STROKES
Definition NanoVG.hpp:240
@ CREATE_DEBUG
Definition NanoVG.hpp:245
void arc(float cx, float cy, float r, float a0, float a1, Winding dir)
void textMetrics(float *ascender, float *descender, float *lineh)
NVGcontext * getContext() const noexcept
Definition NanoVG.hpp:341
void strokeColor(const int red, const int green, const int blue, const int alpha=255)
void lineTo(float x, float y)
NanoImage::Handle createImageFromRGBA(uint w, uint h, const uchar *data, ImageFlags imageFlags)
NanoImage::Handle createImageFromMemory(const uchar *data, uint dataSize, int imageFlags)
void lineJoin(LineCap join=MITER)
NanoImage::Handle createImageFromFile(const char *filename, int imageFlags)
void scale(float x, float y)
void beginFrame(Widget *const widget)
NanoVG(int flags=CREATE_ANTIALIAS)
void scissor(float x, float y, float w, float h)
static void transformIdentity(float dst[6])
NanoImage::Handle createImageFromMemory(const uchar *data, uint dataSize, ImageFlags imageFlags)
void miterLimit(float limit)
void strokePaint(const Paint &paint)
static void transformScale(float dst[6], float sx, float sy)
void lineCap(LineCap cap=BUTT)
void textAlign(int align)
void fillColor(const Color &color)
void fillColor(const int red, const int green, const int blue, const int alpha=255)
void textAlign(Align align)
void fontBlur(float blur)
void circle(float cx, float cy, float r)
NanoImage::Handle createImageFromTextureHandle(GLuint textureId, uint w, uint h, int imageFlags, bool deleteTexture=false)
Paint linearGradient(float sx, float sy, float ex, float ey, const Color &icol, const Color &ocol)
void textLineHeight(float lineHeight)
void pathWinding(Winding dir)
int textBreakLines(const char *string, const char *end, float breakRowWidth, TextRow &rows, int maxRows)
void translate(float x, float y)
void globalTint(Color tint)
NanoImage::Handle createImageFromRGBA(uint w, uint h, const uchar *data, int imageFlags)
static int transformInverse(float dst[6], const float src[6])
void beginFrame(const uint width, const uint height, const float scaleFactor=1.0f)
void roundedRect(float x, float y, float w, float h, float r)
void fillPaint(const Paint &paint)
void globalAlpha(float alpha)
void strokeColor(const Color &color)
void transform(float a, float b, float c, float d, float e, float f)
void quadTo(float cx, float cy, float x, float y)
void currentTransform(float xform[6])
void textLetterSpacing(float spacing)
NanoImage::Handle createImageFromRawMemory(uint w, uint h, const uchar *data, int imageFlags, ImageFormat format)
static void transformPoint(float &dstx, float &dsty, const float xform[6], float srcx, float srcy)
static float degToRad(float deg)
int textGlyphPositions(float x, float y, const char *string, const char *end, GlyphPosition &positions, int maxPositions)
void arcTo(float x1, float y1, float x2, float y2, float radius)
void moveTo(float x, float y)
static void transformSkewY(float dst[6], float a)
NanoImage::Handle createImageFromTextureHandle(GLuint textureId, uint w, uint h, ImageFlags imageFlags, bool deleteTexture=false)
float text(float x, float y, const char *string, const char *end)
FontId findFont(const char *name)
Definition Geometry.hpp:612
Definition Geometry.hpp:133
Definition NanoVG.hpp:304
Definition NanoVG.hpp:286
Definition NanoVG.hpp:310