25#pragma warning( push )
26#pragma warning( disable: 4459 )
28#include <boost/multi_array.hpp>
49 class i_render_target;
51 class i_graphics_context;
60 std::unique_ptr<i_graphics_context>
buffer1;
61 std::unique_ptr<i_graphics_context>
buffer2;
87 iDefaultStop{ aDefaultStop }
90 template <
typename TabStopIter>
92 iDefaultStop{ aDefaultStop },
93 iStops{ aStopsBegin, aStopsEnd }
103 return std::forward_as_tuple(iDefaultStop, iStops) == std::forward_as_tuple(aOther.iDefaultStop, aOther.iStops);
107 return std::forward_as_tuple(iDefaultStop, iStops) <=> std::forward_as_tuple(aOther.iDefaultStop, aOther.iStops);
134 struct unattached : std::logic_error {
unattached() : std::logic_error(
"neogfx::i_graphics_context::unattached") {} };
200 virtual void clear(
const color& aColor,
const std::optional<scalar>& aZpos = std::optional<scalar>{})
const = 0;
237 virtual size text_extent(std::string
const& aText, std::function<font(std::string::size_type)> aFontSelector)
const = 0;
238 virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd)
const = 0;
239 virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const font& aFont)
const = 0;
240 virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, std::function<font(std::string::size_type)> aFontSelector)
const = 0;
251 virtual glyph_text to_glyph_text(std::string
const& aText, std::function<font(std::string::size_type)> aFontSelector)
const = 0;
254 virtual glyph_text to_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const font& aFont)
const = 0;
255 virtual glyph_text to_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, std::function<font(std::string::size_type)> aFontSelector)
const = 0;
258 virtual glyph_text to_glyph_text(
const std::u32string& aText, std::function<font(std::u32string::size_type)> aFontSelector)
const = 0;
259 virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd)
const = 0;
260 virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd,
const font& aFont)
const = 0;
261 virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, std::function<font(std::u32string::size_type)> aFontSelector)
const = 0;
277 virtual void draw_text(
const point& aPoint, std::string
const& aText,
const text_format& aTextFormat)
const = 0;
278 virtual void draw_text(
const point& aPoint, std::string
const& aText,
const font& aFont,
const text_format& aTextFormat)
const = 0;
279 virtual void draw_text(
const point& aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const text_format& aTextFormat)
const = 0;
280 virtual void draw_text(
const point& aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const font& aFont,
const text_format& aTextFormat)
const = 0;
281 virtual void draw_text(
const vec3& aPoint, std::string
const& aText,
const text_format& aTextFormat)
const = 0;
282 virtual void draw_text(
const vec3& aPoint, std::string
const& aText,
const font& aFont,
const text_format& aTextFormat)
const = 0;
283 virtual void draw_text(
const vec3& aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const text_format& aTextFormat)
const = 0;
284 virtual void draw_text(
const vec3& aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd,
const font& aFont,
const text_format& aTextFormat)
const = 0;
307 virtual void set_mnemonic(
bool aShowMnemonics,
char aMnemonicPrefix =
'&')
const = 0;
312 virtual void set_password(
bool aPassword, std::string
const& aMask =
"\xE2\x97\x8F") = 0;
357 draw_pie(aCenter, aRadius, aStartAngle, aEndAngle,
pen{}, aFill);
361 draw_arc(aCenter, aRadius, aStartAngle, aEndAngle,
pen{}, aFill);
377 template <
typename Iter>
381 for (
auto iterGlyph = aGlyphTextBegin; iterGlyph != aGlyphTextEnd; ++iterGlyph)
383 aGc.
draw_glyph(pos, aGlyphText, *iterGlyph, aTextFormat);
384 pos.
x += advance(*iterGlyph).cx;
411 apply_origin(aOrigin, aExtents);
418 apply_origin(aOrigin, aExtents);
440 if (iGc.
origin() != iPreviousOrigin)
444 void apply_origin(
const point& aOrigin,
const size& aExtents)
452 const i_graphics_context& iGc;
453 point iPreviousOrigin;
462 iGc{ aGc }, iPreviousSnapped{ aGc.snap_to_pixel() }
472 bool iPreviousSnapped;
479 iGc{ aGc }, iPreviousOpacity { aGc.opacity() }
489 double iPreviousOpacity;
540 template <
typename Filter>
547 iBufferRect{
point{}, aFilter.region.extents() +
size{ aFilter.radius * 2.0 } },
558 if constexpr (std::is_same_v<Filter, blur_filter>)
559 back_buffer().
blur(iBufferRect,
front_buffer(), iBufferRect, iFilter.radius, iFilter.algorithm, iFilter.parameter1, iFilter.parameter2);
563 rect const drawRect{ iFilter.region.top_left() -
point{ iFilter.radius, iFilter.radius }, iBufferRect.
extents() };
580 std::optional<scoped_render_target> iRenderTarget;
583 template <
typename ValueType =
double, u
int32_t W = 5>
586 const int32_t mean =
static_cast<int32_t
>(
W / 2);
587 std::array<std::array<ValueType, W>,
W> kernel = {};
591 for (int32_t x = -mean; x <= mean; ++x)
593 for (int32_t y = -mean; y <= mean; ++y)
595 kernel[x + mean][y + mean] =
596 static_cast<ValueType
>((1.0 / (2.0 * boost::math::constants::pi<ValueType>() * aSigma * aSigma)) * std::exp(-((x * x + y * y) / (2.0 * aSigma * aSigma))));
597 sum += kernel[x + mean][y + mean];
600 for (uint32_t x = 0; x <
W; ++x)
601 for (uint32_t y = 0; y <
W; ++y)
605 kernel[mean][mean] =
static_cast<ValueType
>(1.0);
609 template <
typename ValueType =
double>
612 const int32_t mean =
static_cast<int32_t
>(aKernelSize / 2);
613 boost::multi_array<ValueType, 2> kernel(boost::extents[aKernelSize][aKernelSize]);
617 for (int32_t x = -mean; x <= mean; ++x)
619 for (int32_t y = -mean; y <= mean; ++y)
621 kernel[x + mean][y + mean] =
622 static_cast<ValueType
>((1.0 / (2.0 * boost::math::constants::pi<ValueType>() * aSigma * aSigma)) * std::exp(-((x * x + y * y) / (2.0 * aSigma * aSigma))));
623 sum += kernel[x + mean][y + mean];
626 for (uint32_t x = 0; x < aKernelSize; ++x)
627 for (uint32_t y = 0; y < aKernelSize; ++y)
631 kernel[mean][mean] =
static_cast<ValueType
>(1.0);
643 if (aTabStops.has_value())
650 if (iPrevious.has_value())
657 std::optional<tab_stops> iPrevious;
const size_type & extents() const
i_glyph_text::const_iterator const_iterator
virtual void draw_texture(const point &aPoint, const i_texture &aTexture, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual void draw_multiline_glyph_text(const vec3 &aPoint, const multiline_glyph_text &aText, const text_format &aTextFormat) const =0
virtual bool is_text_right_to_left(std::string const &aText, const font &aFont) const =0
virtual size multiline_glyph_text_extent(const glyph_text &aText, dimension aMaxWidth) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, std::function< font(std::u32string::size_type)> aFontSelector, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual void clear_stencil_buffer() const =0
virtual point from_device_units(const point &aValue) const =0
virtual std::string const & password_mask() const =0
virtual void set_default_viewport() const =0
virtual point to_device_units(const point &aValue) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, const font &aFont, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual ~i_graphics_context()=default
virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, const font &aFont) const =0
virtual size multiline_text_extent(std::string const &aText, std::function< font(std::string::size_type)> aFontSelector) const =0
void fill_rounded_rect(const rect &aRect, const vec4 &aRadius, const brush &aFill) const
virtual glyph_text to_glyph_text(const std::u32string &aText, const font &aFont) const =0
virtual void draw_multiline_text(const vec3 &aPoint, std::string const &aText, const font &aFont, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::string const &aText, const font &aFont, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual size text_extent(std::string const &aText) const =0
virtual void set_layer(layer_t aLayer)=0
virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd) const =0
virtual void draw_rounded_rect(const rect &aRect, const vec4 &aRadius, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_glyph(const vec3 &aPoint, const glyph_text &aText, const glyph_char &aGlyphChar, const text_format &aTextFormat) const =0
virtual void line_stipple_off() const =0
virtual point origin() const =0
virtual glyph_text to_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd) const =0
virtual void draw_texture(const point &aPoint, const i_texture &aTexture, const rect &aTextureRect, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual void push_logical_operation(logical_operation aLogicalOperation) const =0
virtual void draw_glyph_text(const point &aPoint, const glyph_text &aText, const text_format &aTextFormat) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual void draw_focus_rect(const rect &aRect) const =0
virtual void draw_multiline_text(const vec3 &aPoint, std::string const &aText, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, std::function< font(std::string::size_type)> aFontSelector, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual void draw_text(const vec3 &aPoint, std::string const &aText, const text_format &aTextFormat) const =0
virtual delta from_device_units(const delta &aValue) const =0
virtual size multiline_text_extent(std::string const &aText, const font &aFont) const =0
virtual void flush() const =0
virtual void draw_arc(const point &aCenter, dimension aRadius, angle aStartAngle, angle aEndAngle, const pen &aPen, const brush &aFill=brush{}) const =0
virtual bool mnemonic_set() const =0
virtual void draw_pie(const point &aCenter, dimension aRadius, angle aStartAngle, angle aEndAngle, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_multiline_glyph_text(const vec3 &aPoint, const glyph_text &aText, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
void fill_arc(const point &aCenter, dimension aRadius, angle aStartAngle, angle aEndAngle, const brush &aFill) const
virtual void draw_text(const vec3 &aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const font &aFont, const text_format &aTextFormat) const =0
virtual void clear(const color &aColor, const std::optional< scalar > &aZpos=std::optional< scalar >{}) const =0
virtual void draw_pixel(const point &aPoint, const color &aColor) const =0
virtual void draw_cubic_bezier(const point &aP0, const point &aP1, const point &aP2, const point &aP3, const pen &aPen) const =0
virtual vec2 to_device_units(const vec2 &aValue) const =0
virtual size multiline_text_extent(std::string const &aText) const =0
virtual neogfx::blending_mode blending_mode() const =0
virtual glyph_text to_glyph_text(const std::u32string &aText, std::function< font(std::u32string::size_type)> aFontSelector) const =0
virtual void draw_multiline_text(const point &aPoint, std::string const &aText, const font &aFont, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
void fill_triangle(const point &aP0, const point &aP1, const point &aP2, const brush &aFill) const
virtual void set_logical_coordinate_system(neogfx::logical_coordinate_system aSystem) const =0
virtual neogfx::smoothing_mode smoothing_mode() const =0
virtual void pop_logical_operation() const =0
virtual void draw_text(const point &aPoint, std::string const &aText, const text_format &aTextFormat) const =0
virtual i_tab_stops const & tab_stops() const =0
virtual glyph_text to_glyph_text(std::string const &aText) const =0
virtual void draw_glyph_text(const vec3 &aPoint, const glyph_text &aText, const text_format &aTextFormat) const =0
virtual void draw_multiline_glyph_text(const point &aPoint, const glyph_text &aText, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual void line_stipple_on(scalar aFactor, uint16_t aPattern, scalar aPosition=0.0) const =0
virtual void set_mnemonic(bool aShowMnemonics, char aMnemonicPrefix='&') const =0
virtual void unset_mnemonic() const =0
virtual bool password() const =0
void fill_rect(const rect &aRect, const brush &aFill) const
virtual void draw_text(const vec3 &aPoint, std::string const &aText, const font &aFont, const text_format &aTextFormat) const =0
virtual void draw_multiline_glyph_text(const point &aPoint, const multiline_glyph_text &aText, const text_format &aTextFormat) const =0
virtual void scissor_on(const rect &aRect) const =0
virtual void scissor_off() const =0
virtual void draw_text(const vec3 &aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const text_format &aTextFormat) const =0
void fill_circle(const point &aCenter, dimension aRadius, const brush &aFill) const
virtual double opacity() const =0
virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, std::function< font(std::string::size_type)> aFontSelector) const =0
virtual void subpixel_rendering_off() const =0
void draw_rounded_rect(const rect &aRect, dimension aRadius, const pen &aPen, const brush &aFill=brush{}) const
void fill_checker_rect(const rect &aRect, const size &aSquareSize, const brush &aFill1, const brush &aFill2) const
virtual void set_logical_coordinates(const neogfx::logical_coordinates &aCoordinates) const =0
virtual void draw_glyph_text(const vec3 &aPoint, const glyph_text &aText, glyph_text::const_iterator aTextBegin, glyph_text::const_iterator aTextEnd, const text_format &aTextFormat) const =0
virtual void draw_multiline_text(const vec3 &aPoint, std::string const &aText, const font &aFont, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual void set_smoothing_mode(neogfx::smoothing_mode aSmoothingMode) const =0
virtual layer_t layer() const =0
virtual bool snap_to_pixel() const =0
virtual glyph_text to_glyph_text(std::string const &aText, std::function< font(std::string::size_type)> aFontSelector) const =0
virtual void draw_glyphs(const vec3 &aPoint, const glyph_text &aText, const text_format_spans &aSpans) const =0
virtual bool is_subpixel_rendering_on() const =0
virtual void blit(const rect &aDestinationRect, const i_graphics_context &aSource, const rect &aSourceRect) const =0
void fill_path(const path &aPath, const brush &aFill) const
virtual glyph_text to_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, std::function< font(std::string::size_type)> aFontSelector) const =0
virtual void draw_multiline_text(const point &aPoint, std::string const &aText, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual void blur(const rect &aDestinationRect, const i_graphics_context &aSource, const rect &aSourceRect, dimension aRadius, blurring_algorithm aAlgorithm=blurring_algorithm::Gaussian, scalar aParameter1=5, scalar aParameter2=1.0) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::string const &aText, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
void fill_rounded_rect(const rect &aRect, dimension aRadius, const brush &aFill) const
virtual void set_snap_to_pixel(bool aSnap) const =0
void fill_ellipse(const point &aCenter, dimension aRadiusA, dimension aRadiusB, const brush &aFill) const
virtual void draw_text(const point &aPoint, std::string const &aText, const font &aFont, const text_format &aTextFormat) const =0
virtual void draw_multiline_text(const vec3 &aPoint, std::string const &aText, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual void draw_line(const point &aFrom, const point &aTo, const pen &aPen) const =0
virtual glyph_text to_glyph_text(const std::u32string &aText) const =0
virtual void clear_gradient()=0
virtual size multiline_text_extent(std::string const &aText, const font &aFont, dimension aMaxWidth) const =0
virtual glyph_text to_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const font &aFont) const =0
void fill_shape(const game::mesh &aShape, const vec3 &aPosition, const brush &aFill) const
virtual void draw_text(const point &aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const text_format &aTextFormat) const =0
virtual void draw_circle(const point &aCenter, dimension aRadius, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_texture(const game::mesh &aMesh, const i_texture &aTexture, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual size glyph_text_extent(const glyph_text &aText) const =0
virtual bool is_text_left_to_right(std::string const &aText, const font &aFont) const =0
virtual bool has_tab_stops() const =0
virtual neogfx::logical_coordinate_system logical_coordinate_system() const =0
virtual void draw_multiline_text(const point &aPoint, std::string const &aText, dimension aMaxWidth, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual rect from_device_units(const rect &aValue) const =0
virtual void set_origin(const point &aOrigin) const =0
virtual bool is_text_left_to_right(std::string const &aText) const =0
virtual path to_device_units(const path &aValue) const =0
virtual font const & default_font() const =0
virtual void draw_glyph_text(const point &aPoint, const glyph_text &aText, glyph_text::const_iterator aTextBegin, glyph_text::const_iterator aTextEnd, const text_format &aTextFormat) const =0
virtual bool is_text_right_to_left(std::string const &aText) const =0
virtual void set_opacity(double aOpacity) const =0
void fill_pie(const point &aCenter, dimension aRadius, angle aStartAngle, angle aEndAngle, const brush &aFill) const
virtual neogfx::logical_coordinates logical_coordinates() const =0
virtual void set_password(bool aPassword, std::string const &aMask="\xE2\x97\x8F")=0
virtual multiline_glyph_text to_multiline_glyph_text(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const font &aFont, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd) const =0
virtual glyph_text to_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, std::function< font(std::u32string::size_type)> aFontSelector) const =0
virtual void draw_multiline_text(const point &aPoint, std::string const &aText, const font &aFont, const text_format &aTextFormat, alignment aAlignment=alignment::Left) const =0
virtual void set_blending_mode(neogfx::blending_mode aBlendingMode) const =0
virtual void draw_shape(const game::mesh &aShape, const vec3 &aPosition, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void set_pixel(const point &aPoint, const color &aColor) const =0
virtual multiline_glyph_text to_multiline_glyph_text(const glyph_text &aText, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual void set_extents(const size &aExtents) const =0
virtual void subpixel_rendering_on() const =0
virtual size to_device_units(const size &aValue) const =0
virtual void draw_entities(game::i_ecs &aEcs, int32_t aLayer=0) const =0
virtual size text_extent(std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const font &aFont) const =0
virtual multiline_glyph_text to_multiline_glyph_text(std::u32string::const_iterator aTextBegin, std::u32string::const_iterator aTextEnd, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual void draw_ellipse(const point &aCenter, dimension aRadiusA, dimension aRadiusB, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_texture(const game::mesh &aMesh, const i_texture &aTexture, const rect &aTextureRect, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual path from_device_units(const path &aValue) const =0
virtual size from_device_units(const size &aValue) const =0
virtual void draw_texture(const rect &aRect, const i_texture &aTexture, const rect &aTextureRect, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual glyph_text to_glyph_text(std::string const &aText, const font &aFont) const =0
virtual void set_viewport(const rect &aViewportRect) const =0
virtual rect to_device_units(const rect &aValue) const =0
virtual size multiline_text_extent(std::string const &aText, std::function< font(std::string::size_type)> aFontSelector, dimension aMaxWidth) const =0
virtual multiline_glyph_text to_multiline_glyph_text(const std::u32string &aText, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual size text_extent(std::string const &aText, std::function< font(std::string::size_type)> aFontSelector) const =0
virtual size text_extent(std::string const &aText, const font &aFont) const =0
virtual multiline_glyph_text to_multiline_glyph_text(const std::u32string &aText, const font &aFont, dimension aMaxWidth, alignment aAlignment=alignment::Left) const =0
virtual char mnemonic() const =0
virtual void draw_path(const path &aPath, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_glyphs(const point &aPoint, const glyph_text &aText, const text_format_spans &aSpans) const =0
virtual void clear_tab_stops()=0
virtual void draw_triangle(const point &aP0, const point &aP1, const point &aP2, const pen &aPen, const brush &aFill=brush{}) const =0
virtual delta to_device_units(const delta &aValue) const =0
virtual void draw_rect(const rect &aRect, const pen &aPen, const brush &aFill=brush{}) const =0
virtual void draw_checker_rect(const rect &aRect, const size &aSquareSize, const pen &aPen, const brush &aFill1, const brush &aFill2) const =0
virtual void draw_text(const point &aPoint, std::string::const_iterator aTextBegin, std::string::const_iterator aTextEnd, const font &aFont, const text_format &aTextFormat) const =0
virtual void set_gradient(const gradient &aGradient, const rect &aBoundingBox)=0
virtual size glyph_text_extent(const glyph_text &aText, glyph_text::const_iterator aTextBegin, glyph_text::const_iterator aTextEnd) const =0
virtual size multiline_text_extent(std::string const &aText, dimension aMaxWidth) const =0
virtual void draw_mesh(const game::mesh &aMesh, const game::material &aMaterial, const optional_mat44 &aTransformation=optional_mat44{}, const std::optional< game::filter > &aFilter={}) const =0
virtual void clear_depth_buffer() const =0
virtual bool mnemonics_shown() const =0
virtual void set_tab_stops(i_tab_stops const &aTabStops)=0
virtual void draw_glyph(const point &aPoint, const glyph_text &aText, const glyph_char &aGlyphChar, const text_format &aTextFormat) const =0
virtual void draw_texture(const rect &aRect, const i_texture &aTexture, const color_or_gradient &aColor={}, shader_effect aShaderEffect=shader_effect::None) const =0
virtual void set_default_font(const font &aDefaultFont) const =0
virtual const i_texture & target_texture() const =0
virtual const i_render_target & render_target() const =0
virtual neogfx::logical_coordinate_system logical_coordinate_system() const =0
virtual neogfx::logical_coordinates logical_coordinates() const =0
virtual tab_stop const & default_stop() const =0
virtual neolib::i_vector< tab_stop > const & stops() const =0
scoped_blending_mode(i_graphics_context const &aGc, neogfx::blending_mode aBlendigMode)
scoped_coordinate_system(i_graphics_context const &aGc, i_rendering_context const &aSource)
scoped_coordinate_system(i_graphics_context const &aGc, const point &aOrigin, const size &aExtents, logical_coordinate_system aCoordinateSystem)
~scoped_coordinate_system()
scoped_coordinate_system(i_graphics_context const &aGc, const point &aOrigin, const size &aExtents, logical_coordinate_system aCoordinateSystem, const neogfx::logical_coordinates &aCoordinates)
scoped_coordinate_system(i_graphics_context const &aGc, i_graphics_context const &aSource)
i_graphics_context const & front_buffer() const
scoped_filter(i_graphics_context &aGc, Filter const &aFilter)
i_graphics_context const & back_buffer() const
scoped_mnemonics(i_graphics_context const &aGc, bool aShowMnemonics, char aMnemonicPrefix='&')
scoped_opacity(i_graphics_context const &aGc, double aOpacity)
scoped_scissor(i_graphics_context const &aGc, const rect &aScissorRect)
scoped_snap_to_pixel(i_graphics_context const &aGc, bool aSnapToPixel=true)
scoped_tab_stops(i_graphics_context &aGc, std::optional< tab_stops > const &aTabStops)
std::partial_ordering operator<=>(tab_stops const &aOther) const noexcept
tab_stops(tab_stop const &aDefaultStop)
bool operator==(tab_stops const &aOther) const noexcept
neolib::i_vector< tab_stop > const & stops() const override
tab_stops(i_tab_stops const &aOther)
tab_stops(tab_stop const &aDefaultStop, TabStopIter aStopsBegin, TabStopIter aStopsEnd)
tab_stop const & default_stop() const override
ping_pong_buffers create_ping_pong_buffers(const i_rendering_context &aContext, const size &aExtents, texture_sampling aSampling=texture_sampling::Multisample, const optional_color &aClearColor=color{ vec4{0.0, 0.0, 0.0, 0.0} })
std::array< std::array< ValueType, W >, W > static_gaussian_filter(ValueType aSigma=1.0)
logical_coordinate_system
layer_t constexpr LayerWidget
void draw_alpha_background(i_graphics_context &aGc, const rect &aRect, dimension aAlphaPatternSize=4.0_dip)
default_geometry_value_type dimension
void draw_glyph_text(i_graphics_context const &aGc, const vec3 &aPoint, const glyph_text &aGlyphText, Iter aGlyphTextBegin, Iter aGlyphTextEnd, const text_format &aTextFormat)
layer_t constexpr LayerNestedWindow
basic_point< coordinate > point
boost::multi_array< ValueType, 2 > dynamic_gaussian_filter(uint32_t aKernelSize=5, ValueType aSigma=1.0)
blurring_algorithm algorithm
std::unique_ptr< i_graphics_context > buffer1
std::unique_ptr< i_graphics_context > buffer2
std::partial_ordering operator<=>(tab_stop const &) const noexcept=default