[-]
[+]
|
Changed |
_service:tar_git:harbour-paint.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:paint.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/kimmoli/paint.git</param>
<param name="branch">master</param>
- <param name="revision">ed69a99224803a797fb1c6d064ba526ccc569a78</param>
+ <param name="revision">10d47323c57695862df3b2628a6fbc16383303d2</param>
<param name="token"/>
<param name="debian"/>
<param name="dumb"/>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-paint-0.8.26.tar.bz2/paint.pro
^
|
@@ -157,7 +157,9 @@
qml/glsl/emboss.frag \
qml/glsl/contrast.frag \
qml/glsl/blur.frag \
- qml/components/ShaderPopup.qml
+ qml/components/ShaderPopup.qml \
+ qml/glsl/oilpainting.frag \
+ qml/glsl/colorspace8.frag
TRANSLATIONS += i18n/*.ts
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-paint-0.8.26.tar.bz2/qml/components/Toolbar3.qml
^
|
@@ -135,7 +135,7 @@
cancelPendingFunctions()
geometryPopupVisible = false
dimensionPopupVisible = false
- shaderPopupvisible = false
+ shaderPopupVisible = false
dimensionCanvas.requestPaint()
drawingCanvas.saveActive()
|
[-]
[+]
|
Added |
_service:tar_git:harbour-paint-0.8.26.tar.bz2/qml/glsl/colorspace8.frag
^
|
@@ -0,0 +1,90 @@
+// Change colorspace, 8 colors
+// Pre brightness;0.0;2.0
+
+uniform sampler2D source;
+uniform sampler2D mask;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+uniform lowp float param1;
+
+void main (void)
+{
+ if (texture2D(mask, qt_TexCoord0.st).a > 0.5)
+ {
+ // Adapted from: https://github.com/BradLarson/GPUImage/blob/master/framework/Source/GPUImageCGAColorspaceFilter.m
+
+ highp vec3 color = texture2D(source, qt_TexCoord0).rgb/texture2D(source, qt_TexCoord0).a;
+
+ const highp vec3 brightness = vec3(0.0);
+ color = mix(brightness, color, param1);
+
+ mediump vec3 colorBlack = vec3(0.0);
+ mediump vec3 colorWhite = vec3(1.0);
+ mediump vec3 colorRed = vec3(1.0, 0.0, 0.0);
+ mediump vec3 colorLime = vec3(0.0, 1.0, 0.0);
+ mediump vec3 colorBlue = vec3(0.0, 0.0, 1.0);
+ mediump vec3 colorYellow = vec3(1.0, 1.0, 0.0);
+ mediump vec3 colorCyan = vec3(0.0, 1.0, 1.0);
+ mediump vec3 colorMagenta = vec3(1.0, 0.0, 1.0);
+
+ mediump vec3 endColor;
+ highp float blackDistance = distance(color, colorBlack);
+ highp float whiteDistance = distance(color, colorWhite);
+ highp float redDistance = distance(color, colorRed);
+ highp float limeDistance = distance(color, colorLime);
+ highp float blueDistance = distance(color, colorBlue);
+ highp float yellowDistance = distance(color, colorYellow);
+ highp float magentaDistance = distance(color, colorMagenta);
+ highp float cyanDistance = distance(color, colorCyan);
+
+ mediump vec3 finalColor;
+
+ highp float colorDistance = min(magentaDistance, cyanDistance);
+ colorDistance = min(colorDistance, yellowDistance);
+ colorDistance = min(colorDistance, blueDistance);
+ colorDistance = min(colorDistance, limeDistance);
+ colorDistance = min(colorDistance, redDistance);
+ colorDistance = min(colorDistance, whiteDistance);
+ colorDistance = min(colorDistance, blackDistance);
+
+ if (colorDistance == blackDistance)
+ {
+ finalColor = colorBlack;
+ }
+ else if (colorDistance == whiteDistance)
+ {
+ finalColor = colorWhite;
+ }
+ else if (colorDistance == cyanDistance)
+ {
+ finalColor = colorCyan;
+ }
+ else if (colorDistance == redDistance)
+ {
+ finalColor = colorRed;
+ }
+ else if (colorDistance == limeDistance)
+ {
+ finalColor = colorLime;
+ }
+ else if (colorDistance == blueDistance)
+ {
+ finalColor = colorBlue;
+ }
+ else if (colorDistance == yellowDistance)
+ {
+ finalColor = colorYellow;
+ }
+ else
+ {
+ finalColor = colorMagenta;
+ }
+
+ gl_FragColor = vec4(finalColor * texture2D(source, qt_TexCoord0).a, texture2D(source, qt_TexCoord0).a) * qt_Opacity;
+ }
+ else
+ {
+ gl_FragColor = texture2D(source, qt_TexCoord0.st) * qt_Opacity;
+ }
+}
+
|
[-]
[+]
|
Added |
_service:tar_git:harbour-paint-0.8.26.tar.bz2/qml/glsl/oilpainting.frag
^
|
@@ -0,0 +1,92 @@
+// Oil painting
+// Radius;1;10
+
+// Source: http://stackoverflow.com/a/9402041/4537127
+// Anisotropic Kuwahara Filtering on the GPU
+// by Jan Eric Kyprianidis <www.kyprianidis.com>
+
+uniform sampler2D source;
+uniform sampler2D mask;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+uniform lowp float width;
+uniform lowp float height;
+uniform highp float param1;
+
+void main (void)
+{
+ lowp vec2 src_size = vec2 (height, width);
+
+ if (texture2D(mask, qt_TexCoord0.st).a > 0.5)
+ {
+ int radius = int(param1);
+ vec2 uv = qt_TexCoord0;
+ float n = float((radius + 1) * (radius + 1));
+
+ vec3 m[4];
+ vec3 s[4];
+ for (int k = 0; k < 4; ++k)
+ {
+ m[k] = vec3(0.0);
+ s[k] = vec3(0.0);
+ }
+
+ for (int j = -radius; j <= 0; ++j)
+ {
+ for (int i = -radius; i <= 0; ++i)
+ {
+ vec3 c = texture2D(source, uv + vec2(i,j) / src_size).rgb;
+ m[0] += c;
+ s[0] += c * c;
+ }
+ }
+
+ for (int j = -radius; j <= 0; ++j)
+ {
+ for (int i = 0; i <= radius; ++i)
+ {
+ vec3 c = texture2D(source, uv + vec2(i,j) / src_size).rgb;
+ m[1] += c;
+ s[1] += c * c;
+ }
+ }
+
+ for (int j = 0; j <= radius; ++j)
+ {
+ for (int i = 0; i <= radius; ++i)
+ {
+ vec3 c = texture2D(source, uv + vec2(i,j) / src_size).rgb;
+ m[2] += c;
+ s[2] += c * c;
+ }
+ }
+
+ for (int j = 0; j <= radius; ++j)
+ {
+ for (int i = -radius; i <= 0; ++i)
+ {
+ vec3 c = texture2D(source, uv + vec2(i,j) / src_size).rgb;
+ m[3] += c;
+ s[3] += c * c;
+ }
+ }
+
+ float min_sigma2 = 1e+2;
+ for (int k = 0; k < 4; ++k)
+ {
+ m[k] /= n;
+ s[k] = abs(s[k] / n - m[k] * m[k]);
+
+ float sigma2 = s[k].r + s[k].g + s[k].b;
+ if (sigma2 < min_sigma2)
+ {
+ min_sigma2 = sigma2;
+ gl_FragColor = vec4(m[k], texture2D(source, uv).a) * qt_Opacity;
+ }
+ }
+ }
+ else
+ {
+ gl_FragColor = texture2D(source, qt_TexCoord0.st) * qt_Opacity;
+ }
+}
|