8#ifndef INKSCAPE_UI_WIDGET_CANVAS_GLGRAPHICS_H
9#define INKSCAPE_UI_WIDGET_CANVAS_GLGRAPHICS_H
13#include <boost/noncopyable.hpp>
29 Shader(
char const *src) {
id = glCreateShader(type); glShaderSource(
id, 1, &src,
nullptr); glCompileShader(
id); }
39 void create(
VShader const &v,
FShader const &f) {
id = glCreateProgram(); glAttachShader(
id, v.id); glAttachShader(
id, f.
id); glLinkProgram(
id); }
40 void create(
VShader const &v,
const GShader &g,
FShader const &f) {
id = glCreateProgram(); glAttachShader(
id, v.id); glAttachShader(
id, g.
id); glAttachShader(
id, f.
id); glLinkProgram(
id); }
41 auto loc(
char const *str)
const {
return glGetUniformLocation(
id, str); }
58 void reset() noexcept {
if (
vao) { glDeleteVertexArrays(1, &
vao); glDeleteBuffers(1, &
vbuf); } }
93 void paint_widget(
Fragment const &view, PaintArgs
const &args, Cairo::RefPtr<Cairo::Context>
const &cr)
override;
Cairo::RefPtr< Cairo::ImageSurface > surface
Cairo::RefPtr< Cairo::ImageSurface > outline_surface
Axis aligned, non-empty, generic rectangle.
Two-dimensional point with integer coordinates.
Geom::IntPoint dimensions(const Cairo::RefPtr< Cairo::ImageSurface > &surface)