Aging_MouthReplace / dlibs /dlib /gui_widgets /canvas_drawing_abstract.h
AshanGimhana's picture
Upload folder using huggingface_hub
9375c9a verified
// Copyright (C) 2005 Davis E. King ([email protected]), and Nils Labugt
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_GUI_CANVAS_DRAWINg_ABSTRACT_
#ifdef DLIB_GUI_CANVAS_DRAWINg_ABSTRACT_
#include "../gui_core.h"
#include "../pixel.h"
namespace dlib
{
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_line (
const canvas& c,
const point& p1,
const point& p2,
const pixel_type& pixel = rgb_pixel(0,0,0),
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- draws the part of the line from p1 to p1 that overlaps with
the canvas and area onto the canvas.
- Uses the given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_rectangle (
const canvas& c,
rectangle rect,
const pixel_type& pixel = rgb_pixel(0,0,0),
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- Draws the part of the rectangle that overlaps with
the canvas and area onto the canvas.
- Uses the given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_circle (
const canvas& c,
const point& center_point,
double radius,
const pixel_type& pixel = rgb_pixel(0,0,0),
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- draws the part of the circle centered at center_point with the given radius
that overlaps with the canvas and area onto the canvas.
- Uses the given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_pixel (
const canvas& c,
const point& p,
const pixel_type& pixel
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- if (c.contains(p)) then
- sets the pixel in c that represents the point p to the
given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_solid_circle (
const canvas& c,
const point& center_point,
double radius,
const pixel_type& pixel = rgb_pixel(0,0,0),
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- draws the part of the solid circle centered at center_point with the given
radius that overlaps with the canvas and area onto the canvas.
("solid" means that the interior is also filled in with the given
pixel color)
- Uses the given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_solid_convex_polygon (
const canvas& c,
const std::vector<point>& polygon,
const pixel_type& pixel = rgb_pixel(0,0,0),
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- Interprets the given std::vector polygon object as defining a convex polygon
shape. In particular, the polygon is given by taking the points and drawing
lines between them. That is, imagine drawing a line connecting polygon[i]
and polygon[(i+1)%polygon.size()], for all valid i, and then filling in the
interior of the polygon. That is what this function does.
- When drawing the polygon, only the part of the polygon which overlaps both
the given canvas and area rectangle is drawn.
- Uses the given pixel color to draw the polygon.
!*/
// ----------------------------------------------------------------------------------------
void draw_button_down (
const canvas& c,
const rectangle& btn,
unsigned char alpha = 255
);
/*!
requires
- 0 <= alpha <= 255
ensures
- draws the border of a button onto canvas c:
- the border will be that of a button that is depressed
- only the part of the border that overlaps with the canvas object
will be drawn.
- the border will be for the button whose area is defined by the
rectangle btn.
- performs alpha blending such that the button is drawn with full opacity
when alpha is 255 and fully transparent when alpha is 0.
!*/
// ----------------------------------------------------------------------------------------
void draw_sunken_rectangle (
const canvas& c,
const rectangle& border,
unsigned char alpha = 255
);
/*!
requires
- 0 <= alpha <= 255
ensures
- draws a sunken rectangle around the given border.
(This is the type of border used for text_fields and
check_boxes and the like).
- performs alpha blending such that the rectangle is drawn with full opacity
when alpha is 255 and fully transparent when alpha is 0.
!*/
// ----------------------------------------------------------------------------------------
void draw_button_up (
const canvas& c,
const rectangle& btn,
unsigned char alpha = 255
);
/*!
requires
- 0 <= alpha <= 255
ensures
- draws the border of a button onto canvas c:
- the border will be that of a button that is NOT depressed
- only the part of the border that overlaps with the canvas object
will be drawn.
- the border will be for the button whose area is defined by the
rectangle btn.
- performs alpha blending such that the button is drawn with full opacity
when alpha is 255 and fully transparent when alpha is 0.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_checkered (
const canvas& c,
const rectangle& area,
const pixel_type& pixel1,
const pixel_type& pixel2
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- fills the area on the given canvas defined by the rectangle area with a checkers
board pattern where every other pixel gets assigned either pixel1 or pixel2.
!*/
// ----------------------------------------------------------------------------------------
template <
typename image_type
>
void draw_image (
const canvas& c
const point& p,
const image_type& image,
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- image_type == an implementation of array2d/array2d_kernel_abstract.h
- pixel_traits<typename image_type::type> is defined
ensures
- draws the given image object onto the canvas such that the upper left corner of the
image will appear at the point p in the canvas's window. (note that the
upper left corner of the image is assumed to be the pixel image[0][0] and the
lower right corner of the image is assumed to be image[image.nr()-1][image.nc()-1])
- only draws the part of the image that overlaps with the area rectangle
!*/
// ----------------------------------------------------------------------------------------
template <
typename image_type
>
void draw_image (
const canvas& c,
const rectangle& rect,
const image_type& img,
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- image_type == an implementation of array2d/array2d_kernel_abstract.h
- pixel_traits<typename image_type::type> is defined
ensures
- draws the given image object onto the canvas such that the upper left corner
of the image will appear at the point rect.tl_corner() in the canvas's window
and the lower right corner of the image will appear at rect.br_corner() in
the canvas's window. (note that the upper left corner of the image is
assumed to be the pixel image[0][0] and the lower right corner of the image
is assumed to be image[image.nr()-1][image.nc()-1])
- only draws the part of the image that overlaps with the area rectangle
- Uses nearest neighbor interpolation when the given rect isn't the same size
as the input image.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void fill_rect (
const canvas& c,
const rectangle& rect,
const pixel_type& pixel
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- fills the area defined by rect in the given canvas with the given pixel color.
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void fill_rect_with_vertical_gradient (
const canvas& c,
const rectangle& rect,
const pixel_type& pixel_top,
const pixel_type& pixel_bottom,
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- fills the rectangle defined by rect in the given canvas with the given colors.
The top of the area will have the pixel_top color and will slowly fade
towards the pixel_bottom color towards the bottom of rect.
- only draws the part of the image that overlaps with the area rectangle
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void fill_gradient_rounded (
const canvas& c,
const rectangle& rect,
unsigned long radius,
const pixel_type& top_color,
const pixel_type& bottom_color,
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- Fills the region defined by rect in the given canvas with the given colors.
The top of the region will have the top_color color and will slowly fade
towards the bottom_color color towards the bottom of rect.
- The drawn rectangle will have rounded corners and with the amount of
- rounding given by the radius argument.
- only the part of this object that overlaps with area and the canvas
will be drawn on the canvas
!*/
// ----------------------------------------------------------------------------------------
template <
typename pixel_type
>
void draw_rounded_rectangle (
const canvas& c,
const rectangle& rect,
unsigned radius,
const pixel_type& color,
const rectangle& area = rectangle(-infinity,-infinity,infinity,infinity)
);
/*!
requires
- pixel_traits<pixel_type> is defined
ensures
- Draws the part of the rectangle that overlaps with
the canvas onto the canvas.
- The drawn rectangle will have rounded corners and with the amount of
rounding given by the radius argument.
- Uses the given pixel color.
- only draws the part of the image that overlaps with the area rectangle
!*/
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_GUI_CANVAS_DRAWINg_ABSTRACT_