1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
/*
* Copyright (C) 2025 Linux Studio Plugins Project <https://lsp-plug.in/>
* (C) 2025 Vladimir Sadovnikov <sadko4u@gmail.com>
*
* This file is part of lsp-tk-lib
* Created on: 22 авг. 2020 г.
*
* lsp-tk-lib is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* lsp-tk-lib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with lsp-tk-lib. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef LSP_PLUG_IN_TK_HELPERS_DRAW_H_
#define LSP_PLUG_IN_TK_HELPERS_DRAW_H_
#include <lsp-plug.in/tk/tk.h>
namespace lsp
{
namespace tk
{
/** Draw border
*
* @param s surface to draw the border
* @param size the size of the surrounding rectangle
* @param thick the thickness of the border
* @param iradius inner radius of the border
* @param mask the rounding mask
* @param c the color of the border
*/
void draw_border(ws::ISurface *s,
const lsp::Color &c, size_t mask, ssize_t thick, size_t iradius,
const ws::rectangle_t *size, bool flat);
/**
* Create cached off-screen surface
* @param g pointer that holds pointer to the surface (may be updated)
* @param parent pointer to the parent surface
* @param width width of the surface
* @param height height of the surface
* @return true if surface needs to be redrawn (if it was created or resized)
*/
bool create_cached_surface(ws::ISurface **g, ws::ISurface *parent, size_t width, size_t height);
/** Create glass
*
* @param s the factory surface
* @param g pointer to pointer that stores address of the surface object
* @param c color of the glass
* @param width the width of the glass
* @param height the height of the glass
* @param radius the radius of the glass
* @param mask the radius drawing mask
* @return pointer to the glass on succes or null on error
*/
ws::ISurface *create_glass(ws::ISurface **g, ws::ISurface *s,
const lsp::Color &c,
size_t mask, ssize_t radius, size_t width, size_t height);
/** Create glass with border
*
* @param s the factory surface
* @param g pointer to pointer that stores address of the surface object
* @param width the width of the glass
* @param height the height of the glass
* @param radius the radius of the glass
* @param mask the radius drawing mask
* @param gc the color of the glass
* @param bc the color of the border
* @param flat use flat border painting insetad of gradient
* @return pointer to the glass on succes or null on error
*/
ws::ISurface * create_border_glass(
ws::ISurface **g, ws::ISurface *s,
const lsp::Color &gc, const lsp::Color &bc,
size_t mask, ssize_t thick, ssize_t radius,
size_t width, size_t height, bool flat
);
void draw_border_back(
ws::ISurface *s,
const lsp::Color &c, size_t mask,
ssize_t thick, size_t radius,
ssize_t left, ssize_t top,
ssize_t width, ssize_t height
);
void draw_border_back(
ws::ISurface *s,
const lsp::Color &c, size_t mask,
ssize_t thick, size_t radius,
const ws::rectangle_t *size
);
/**
* Draw multiline text
*
* @param s destination surface to perform draw
* @param font font to use
* @param r rectangle to fit the font
* @param color color of the text
* @param fp font parameters
* @param tp text parameters
* @param halign horizontal font alignment
* @param valign vertical font alignment
* @param fscaling font scaling
* @param text text to output
*/
void draw_multiline_text(
ws::ISurface *s,
Font *font,
const ws::rectangle_t *r,
const lsp::Color &color,
const ws::font_parameters_t *fp,
const ws::text_parameters_t *tp,
float halign, float valign, float fscaling,
const LSPString *text
);
} /* namespace tk */
} /* namespace lsp */
#endif /* LSP_PLUG_IN_TK_HELPERS_DRAW_H_ */
|