1.10 |
Raster image resource used for drawing or displaying. More...
#include <image.h>
Public Member Functions | |
Image (cairo_surface_t *surface) | |
Image (const std::string &uri, float hscale, float vscale) | |
Construct a raster image from a URI with an optional scale. | |
Image (const std::string &uri={}, float scale=1.0) | |
Construct a raster image from a URI with an optional scale. | |
Image (const unsigned char *data, size_t len) | |
Construct a raster image from memory. | |
Image (shared_cairo_surface_t surface) | |
EGT_NODISCARD Rect | align (const Rect &bounding, const AlignFlags &align) |
Get the position and size of the image once aligned inside the bounding area. | |
void | copy () |
This function must be called any time the surface is going to be modified. | |
Image | crop (const Rect &rect) |
Image | crop (const RectF &rect) |
void | deserialize (const std::string &name, const std::string &value, const Serializer::Attributes &attrs) |
Deserialized property. | |
EGT_NODISCARD bool | empty () const |
Returns true if no internal surface is set. | |
EGT_NODISCARD DefaultDim | height () const |
EGT_NODISCARD float | hscale () const |
Get the horizontal scale value. | |
bool | keep_image_ratio () const |
Get the keep image ratio state. | |
void | keep_image_ratio (bool enable) |
Enable/disable ratio preservation while scaling the image. | |
void | load (const std::string &uri, float hscale=1.0, float vscale=1.0, bool approx=false) |
Load a new source image with an optional scale. | |
EGT_NODISCARD cairo_pattern_t * | pattern () const |
Get internal pattern representation. | |
void | reset_uri () |
void | resize (const Size &size) |
Resize the image to the specified absolute size. | |
void | scale (float hscale, float vscale, bool approximate=false) |
Scale the image. | |
void | scale (float scale, bool approximate=false) |
Scale the image. | |
void | serialize (const std::string &name, Serializer &serializer) const |
Serialize to the specified serializer. | |
EGT_NODISCARD Size | size () const |
Get the absolute size of the image. | |
EGT_NODISCARD Size | size_orig () const |
Get the original size of the image before any Image::resize() or Image::scale() calls. | |
EGT_NODISCARD shared_cairo_surface_t | surface () const |
Get a reference to the internal image surface. | |
EGT_NODISCARD std::string | uri () const |
void | uri (const std::string &uri) |
EGT_NODISCARD float | vscale () const |
Get the vertical scale value. | |
EGT_NODISCARD DefaultDim | width () const |
Protected Member Functions | |
void | handle_surface_changed () |
Protected Attributes | |
float | m_hscale {1.0} |
Horizontal scale value, compared to original. | |
bool | m_keep_image_ratio {true} |
Keep the image ratio when the aligned with AlignFlag::expand. | |
Size | m_orig_size |
Original image size. | |
shared_cairo_pattern_t | m_pattern |
Internal pattern representation. | |
shared_cairo_surface_t | m_surface |
Shared surface pointer. | |
shared_cairo_surface_t | m_surface_local |
Local surface pointer. | |
std::string | m_uri |
If a URI was used, the URI. | |
float | m_vscale {1.0} |
Vertical scale value, compared to original. | |
Friends | |
class | SvgImage |
Raster image resource used for drawing or displaying.
This class by default shares the internal surface pointer with anything else using the surface. To force this class to keep its own copy, call the copy() function.
Image | ( | const std::string & | uri = {} , |
float | scale = 1.0 |
||
) |
Image | ( | const std::string & | uri, |
float | hscale, | ||
float | vscale | ||
) |
Construct a raster image from a URI with an optional scale.
uri | Resource path. |
hscale | Horizontal scale of the image, with 1.0 being 100%. |
vscale | Vertical scale of the image, with 1.0 being 100%. |
Image | ( | const unsigned char * | data, |
size_t | len | ||
) |
Construct a raster image from memory.
data | Pointer to the data. |
len | Length of the data. |
Image | ( | shared_cairo_surface_t | surface | ) |
surface | A pre-existing surface. |
This takes a reference to the passed in image.
Image | ( | cairo_surface_t * | surface | ) |
surface | A pre-existing surface. |
This will not own the passed in pointer or surface, and instead will make a copy of the surface.
EGT_NODISCARD Rect align | ( | const Rect & | bounding, |
const AlignFlags & | align | ||
) |
Get the position and size of the image once aligned inside the bounding area.
void copy | ( | ) |
void deserialize | ( | const std::string & | name, |
const std::string & | value, | ||
const Serializer::Attributes & | attrs | ||
) |
Deserialized property.
|
inline |
Returns true if no internal surface is set.
|
protected |
|
inline |
|
inline |
Get the horizontal scale value.
|
inline |
Get the keep image ratio state.
|
inline |
Enable/disable ratio preservation while scaling the image.
If enabled, the original image ratio won't be changed during the image auto scale operation. By default, set to true.
void load | ( | const std::string & | uri, |
float | hscale = 1.0 , |
||
float | vscale = 1.0 , |
||
bool | approx = false |
||
) |
Load a new source image with an optional scale.
uri | Resource path. |
hscale | Horizontal scale of the image, with 1.0 being 100%. |
vscale | Vertical scale of the image, with 1.0 being 100%. |
approx | Approximate the scale to increase image cache hit efficiency. |
|
inline |
Get internal pattern representation.
|
inline |
|
inline |
Resize the image to the specified absolute size.
size | The new size of the image. |
void scale | ( | float | hscale, |
float | vscale, | ||
bool | approximate = false |
||
) |
Scale the image.
Change the scale of the image, similar to calling Image::resize().
This scales relative to the original size of the image. Not the result of any subsequent Image::resize() or Image::scale() call.
hscale | Horizontal scale of the image, with 1.0 being 100%. |
vscale | Vertical scale of the image, with 1.0 being 100%. |
approximate | Approximate the scale to increase image cache hit efficiency. |
|
inline |
Scale the image.
void serialize | ( | const std::string & | name, |
Serializer & | serializer | ||
) | const |
Serialize to the specified serializer.
|
inline |
Get the absolute size of the image.
|
inline |
Get the original size of the image before any Image::resize() or Image::scale() calls.
|
inline |
Get a reference to the internal image surface.
|
inline |
|
inline |
|
inline |
Get the vertical scale value.
|
inline |
|
friend |
|
protected |
Horizontal scale value, compared to original.
|
protected |
Keep the image ratio when the aligned with AlignFlag::expand.
|
protected |
Original image size.
|
mutableprotected |
Internal pattern representation.
|
protected |
Shared surface pointer.
|
protected |
Local surface pointer.
|
protected |
If a URI was used, the URI.
|
protected |
Vertical scale value, compared to original.