comparison Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp @ 860:238693c3bc51 am-dev

merge default -> am-dev
author Alain Mazy <alain@mazy.be>
date Mon, 24 Jun 2019 14:35:00 +0200
parents cfb4d39065a4 b8dfd966b5f4
children 6e79e8c9021c
comparison
equal deleted inserted replaced
856:a6e17a5a39e7 860:238693c3bc51
19 **/ 19 **/
20 20
21 21
22 #include "CairoFloatTextureRenderer.h" 22 #include "CairoFloatTextureRenderer.h"
23 23
24 #include "CairoColorTextureRenderer.h"
24 #include "../FloatTextureSceneLayer.h" 25 #include "../FloatTextureSceneLayer.h"
25 26
26 namespace OrthancStone 27 namespace OrthancStone
27 { 28 {
28 namespace Internals 29 namespace Internals
69 v = 255; 70 v = 255;
70 } 71 }
71 72
72 uint8_t vv = static_cast<uint8_t>(v); 73 uint8_t vv = static_cast<uint8_t>(v);
73 74
75 if (l.IsInverted())
76 {
77 vv = 255 - vv;
78 }
79
74 q[0] = vv; 80 q[0] = vv;
75 q[1] = vv; 81 q[1] = vv;
76 q[2] = vv; 82 q[2] = vv;
77 83
78 p++; 84 p++;
82 } 88 }
83 89
84 90
85 void CairoFloatTextureRenderer::Render(const AffineTransform2D& transform) 91 void CairoFloatTextureRenderer::Render(const AffineTransform2D& transform)
86 { 92 {
87 cairo_t* cr = target_.GetCairoContext(); 93 CairoColorTextureRenderer::RenderColorTexture(target_, transform, texture_,
88 94 textureTransform_, isLinearInterpolation_);
89 AffineTransform2D t =
90 AffineTransform2D::Combine(transform, textureTransform_);
91 Matrix h = t.GetHomogeneousMatrix();
92
93 cairo_save(cr);
94
95 cairo_matrix_t m;
96 cairo_matrix_init(&m, h(0, 0), h(1, 0), h(0, 1), h(1, 1), h(0, 2), h(1, 2));
97 cairo_transform(cr, &m);
98
99 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
100 cairo_set_source_surface(cr, texture_.GetObject(), 0, 0);
101
102 if (isLinearInterpolation_)
103 {
104 cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
105 }
106 else
107 {
108 cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
109 }
110
111 cairo_paint(cr);
112
113 cairo_restore(cr);
114 } 95 }
115 } 96 }
116 } 97 }