~zorba-coders/zorba/bug-1158052-image

« back to all changes in this revision

Viewing changes to test/Queries/image/paint_circles.xq

  • Committer: mbrantner
  • Date: 2011-08-07 00:38:36 UTC
  • Revision ID: svn-v4:8046edc3-af21-0410-8661-ec7318497eea:modules/image/trunk:11598
unqualified schema for image modules

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
(:~
2
 
 : This example creates a new image using the image/basic function and paints different sorts of circles and arcs onto it. 
3
 
 : As it is, the example just asserts that the resulting xs:base64Binary is not empty, in a real application one could further process the image, or write it 
4
 
 : to disk using file:write(a_path, $image-with-circles, <method>binary</method>), send it in an email etc.
5
 
 : 
6
 
 : Actually, as the paint function accepts sequences of shapes, it would have been possible to paint all circles, ellipses and arcs with one single command
7
 
 : paint:paint($new-image, (<image:circle><origin><x>20</x><y>20</y></origin><perimeter>20</perimeter></image:circle>,
8
 
 :                          <image:ellipse><origin><x>40</x><y>70</y></origin><perimeterX>20</perimeterX><perimeterY>10</perimeterY></image:ellipse>,
9
 
 :                          <image:arc><origin><x>70</x><y>35</y></origin><perimeterX>15</perimeterX><perimeterY>25</perimeterY><startDegrees>90</startDegrees><endDegrees>180</endDegrees></image:arc>,
10
 
 :                          <image:circle><fillColor>#0000FF</fillColor><origin><x>80</x><y>20</y></origin><perimeter>20</perimeter></image:circle>))
11
 
 :                           
12
 
 : However, here it is done with several function calls to make it more clear what exactly is painted.
13
 
 :
14
 
 :)
15
 
import module namespace basic = 'http://www.zorba-xquery.com/modules/image/basic';
16
 
import module namespace paint = 'http://www.zorba-xquery.com/modules/image/paint';
17
 
import module namespace file = 'http://expath.org/ns/file';
18
 
 
19
 
import schema namespace image = 'http://www.zorba-xquery.com/modules/image/image';
20
 
 
21
 
let $new-image :=  basic:create(xs:unsignedInt(100), xs:unsignedInt(100), "GIF")
22
 
 
23
 
(: paint a simple circle with origin in (20, 20) and a perimeter of 20px to the image :)
24
 
let $image-with-circle := paint:paint($new-image, <image:circle><origin><x>20</x><y>20</y></origin><perimeter>20</perimeter></image:circle>)
25
 
 
26
 
(: paint an ellipse to the image :)
27
 
let $image-with-circles := paint:paint($image-with-circle, <image:ellipse><origin><x>40</x><y>70</y></origin><perimeterX>20</perimeterX><perimeterY>10</perimeterY></image:ellipse>)
28
 
 
29
 
(: paint an arc from 90 to 180 degrees to the image :)
30
 
let $image-with-circles := paint:paint($image-with-circles, <image:arc><origin><x>70</x><y>35</y></origin><perimeterX>15</perimeterX><perimeterY>25</perimeterY><startDegrees>90</startDegrees><endDegrees>180</endDegrees></image:arc>)
31
 
 
32
 
(: paint a blue circle with black contour onto the image :)
33
 
let $image-with-circles := paint:paint($image-with-circles, <image:circle><fillColor>#0000FF</fillColor><origin><x>80</x><y>20</y></origin><perimeter>20</perimeter></image:circle>)
34
 
 
35
 
 
36
 
return not(empty($image-with-circles)) 
37
 
 
 
1
(:~
 
2
 : This example creates a new image using the image/basic function and paints different sorts of circles and arcs onto it. 
 
3
 : As it is, the example just asserts that the resulting xs:base64Binary is not empty, in a real application one could further process the image, or write it 
 
4
 : to disk using file:write(a_path, $image-with-circles, <method>binary</method>), send it in an email etc.
 
5
 : 
 
6
 : Actually, as the paint function accepts sequences of shapes, it would have been possible to paint all circles, ellipses and arcs with one single command
 
7
 : paint:paint($new-image, (<image:circle><image:origin><image:x>20</image:x><image:y>20</image:y></image:origin><image:perimeter>20</image:perimeter></image:circle>,
 
8
 :                          <image:ellipse><image:origin><image:x>40</image:x><image:y>70</image:y></image:origin><image:perimeterX>20</image:perimeterX><image:perimeterY>10</image:perimeterY></image:ellipse>,
 
9
 :                          <image:arc><image:origin><image:x>70</image:x><image:y>35</image:y></image:origin><image:perimeterX>15</image:perimeterX><image:perimeterY>25</image:perimeterY><image:startDegrees>90</image:startDegrees><image:endDegrees>180</image:endDegrees></image:arc>,
 
10
 :                          <image:circle><image:fillColor>#0000FF</image:fillColor><image:origin><image:x>80</image:x><image:y>20</image:y></image:origin><image:perimeter>20</image:perimeter></image:circle>))
 
11
 :                           
 
12
 : However, here it is done with several function calls to make it more clear what exactly is painted.
 
13
 :
 
14
 :)
 
15
import module namespace basic = 'http://www.zorba-xquery.com/modules/image/basic';
 
16
import module namespace paint = 'http://www.zorba-xquery.com/modules/image/paint';
 
17
import module namespace file = 'http://expath.org/ns/file';
 
18
 
 
19
import schema namespace image = 'http://www.zorba-xquery.com/modules/image/image';
 
20
 
 
21
let $new-image :=  basic:create(xs:unsignedInt(100), xs:unsignedInt(100), "GIF")
 
22
 
 
23
(: paint a simple circle with origin in (20, 20) and a perimeter of 20px to the image :)
 
24
let $image-with-circle := paint:paint($new-image, <image:circle><image:origin><image:x>20</image:x><image:y>20</image:y></image:origin><image:perimeter>20</image:perimeter></image:circle>)
 
25
 
 
26
(: paint an ellipse to the image :)
 
27
let $image-with-circles := paint:paint($image-with-circle, <image:ellipse><image:origin><image:x>40</image:x><image:y>70</image:y></image:origin><image:perimeterX>20</image:perimeterX><image:perimeterY>10</image:perimeterY></image:ellipse>)
 
28
 
 
29
(: paint an arc from 90 to 180 degrees to the image :)
 
30
let $image-with-circles := paint:paint($image-with-circles, <image:arc><image:origin><image:x>70</image:x><image:y>35</image:y></image:origin><image:perimeterX>15</image:perimeterX><image:perimeterY>25</image:perimeterY><image:startDegrees>90</image:startDegrees><image:endDegrees>180</image:endDegrees></image:arc>)
 
31
 
 
32
(: paint a blue circle with black contour onto the image :)
 
33
let $image-with-circles := paint:paint($image-with-circles, <image:circle><image:fillColor>#0000FF</image:fillColor><image:origin><image:x>80</image:x><image:y>20</image:y></image:origin><image:perimeter>20</image:perimeter></image:circle>)
 
34
 
 
35
 
 
36
return not(empty($image-with-circles)) 
 
37