/[cvs]/nfo/php/libs/com.newsblob.phphtmllib/tag_utils/svg_utils.inc
ViewVC logotype

Contents of /nfo/php/libs/com.newsblob.phphtmllib/tag_utils/svg_utils.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations)
Thu May 6 16:27:37 2004 UTC (20 years, 2 months ago) by jonen
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +0 -0 lines
 updated all to v2.4.1 - Apr 01, 2004

1 <?php
2 /**
3 * This file holds helper functions
4 * for things related to SVG Tags
5 * (Scalable Vector Graphics)
6 *
7 * $Id: svg_utils.inc,v 1.8 2003/02/27 02:10:29 hemna Exp $
8 *
9 * @author Walter A. Boring IV <waboring@buildabetterweb.com>
10 * @package phpHtmlLib
11 * @link http://phphtmllib.newsblob.com
12 */
13
14
15 /**
16 * This function is used to build an
17 * SVG <a> tag
18 *
19 * @param string - the 'xlink:href' attribute
20 * @param mixed - any N number of params for
21 * content for the tag
22 * @return Asvgtag object
23 * @link http://www.w3.org/TR/SVG/linking.html#AElement
24 */
25 function svg_a($xlinkhref) {
26 $tag = new Asvgtag( array("xlink:href" => $xlinkhref));
27 $num_args = func_num_args();
28 for ($i=1;$i<$num_args;$i++) {
29 $tag->add(func_get_arg($i));
30 }
31 return $tag;
32 }
33
34 /**
35 * This function is used to build an
36 * SVG <animate> tag
37 *
38 * @param string - the 'from' attribute
39 * @param string - the 'to' attribute
40 * @param string - the 'duration' attribute
41 * @param string - the 'attributeName' attribute
42 * @param string - the 'attributeType' attribute
43 * @param string - the 'repeatCount' attribute
44 * @param string - the 'fill' attribute
45 * @return ANIMATEsvgtag object
46 * @link http://www.w3.org/TR/SVG/animate.html#AnimateElement
47 */
48 function svg_animate($from, $to, $duration, $attributename,
49 $attributetype, $repeatcount=NULL, $fill=NULL) {
50 $tag = new ANIMATEsvgtag( array("from" => $from, "to" => $to,
51 "duration" => $duration,
52 "attributeName" => $attributename,
53 "attributeType" => $attributetype));
54 if ($repeatcount) {
55 $tag->set_tag_attribute("repeatCount", $repeatcount);
56 }
57 if ($fill) {
58 $tag->set_tag_attribute("fill", $fill);
59 }
60
61 return $tag;
62 }
63
64 /**
65 * This function is used to build an
66 * SVG <circle> tag and its common
67 * attributes
68 *
69 * @param int - the 'cx' attribute. The x-axis
70 * coordinate of the center of the circle
71 * @param int - the 'cy' attribute. The y-axis
72 * coordinate of the center of the circle
73 * @param string - the 'r' (radius) attribute
74 * @param string - the 'fill' attribute
75 * @param string - the 'stroke' attribute
76 * @param string - the 'stroke-width' attribute
77 * @param string - the 'style' attribyte
78 * @return CIRCLEsvgtag object
79 * @link http://www.w3.org/TR/SVG/shapes.html
80 */
81 function svg_circle($cx, $cy, $radius, $fill="none",
82 $stroke=NULL, $strokewidth=NULL, $style=NULL) {
83 $tag = new CIRCLEsvgtag( array("cx" => $cx, "cy" => $cy,
84 "r" => $radius));
85 if ($fill) {
86 $tag->set_tag_attribute("fill", $fill);
87 }
88 if ($stroke) {
89 $tag->set_tag_attribute("stroke", $stroke);
90 }
91 if ($strokewidth) {
92 $tag->set_tag_attribute("stroke-width", $strokewidth);
93 }
94 if ($style) {
95 $tag->set_style($style);
96 }
97 return $tag;
98 }
99
100 /**
101 * This function is used for building an
102 * SVG <defs> tag
103 *
104 * @param mixed - any N number of params for
105 * content for the tag
106 * @return DESCsvgtag object
107 */
108 function svg_defs() {
109 $tag = new DEFSsvgtag;
110 $args = func_get_args();
111 call_user_func_array( array(&$tag, "add"), $args);
112 return $tag;
113 }
114
115 /**
116 * This function is used for building an
117 * SVG <desc> tag
118 *
119 * @param mixed - any N number of params for
120 * content for the tag
121 * @return DESCsvgtag object
122 */
123 function svg_desc() {
124 $tag = new DESCsvgtag;
125 $args = func_get_args();
126 call_user_func_array( array(&$tag, "add"), $args);
127 return $tag;
128 }
129
130 /**
131 * This function is used to build an
132 * SVG <ellipse> tag and its common
133 * attributes
134 *
135 * @param int - the 'cx' attribute. The x-axis
136 * coordinate of the center of the circle
137 * @param int - the 'cy' attribute. The y-axis
138 * coordinate of the center of the circle
139 * @param int - the 'rx' attribute. The x-axis radius of
140 * the ellipse.
141 * @param int - the 'ry' attribute. The y-axis radius of
142 * the ellipse.
143 * @param string - the 'fill' attribute
144 * @param string - the 'stroke' attribute
145 * @param string - the 'stroke-width' attribute
146 * @param string - the 'style' attribyte
147 * @return ELLIPSEsvgtag object
148 * @link http://www.w3.org/TR/SVG/shapes.html
149 */
150 function svg_ellipse($cx, $cy, $rx, $ry, $fill="none",
151 $stroke=NULL, $strokewidth, $style=NULL) {
152 $tag = new ELLIPSEsvgtag( array("cx" => $cx, "cy" => $cy,
153 "rx" => $rx, "ry" => $ry));
154 if ($fill) {
155 $tag->set_tag_attribute("fill", $fill);
156 }
157 if ($stroke) {
158 $tag->set_tag_attribute("stroke", $stroke);
159 }
160 if ($strokewidth) {
161 $tag->set_tag_attribute("stroke-width", $strokewidth);
162 }
163 if ($style) {
164 $tag->set_style($style);
165 }
166 return $tag;
167 }
168
169 /**
170 * this function builds an SVG
171 * <font> tag
172 *
173 * @param string - the required 'horiz-adv-x' attribute
174 * @return FONTsvgtag object
175 */
176 function svg_font( $horizadvx ) {
177 $tag = new FONTsvgtag( array("horiz-adv-x" =>
178 $horizadvx));
179 $num_args = func_num_args();
180 for ($i=1;$i<$num_args;$i++) {
181 $tag->add(func_get_arg($i));
182 }
183 return $tag;
184 }
185
186 /**
187 * This function builds an SVG
188 * <g> tag
189 *
190 * @param string - the 'style' attribute
191 * @param string - the 'transform' attribute
192 * @return Gsvgtag object
193 */
194 function svg_g($style=NULL, $transform=NULL) {
195 $tag = new Gsvgtag;
196 if ($style) {
197 $tag->set_style($style);
198 }
199
200 if ($transform) {
201 $tag->set_transform( $transform );
202 }
203
204 return $tag;
205 }
206
207
208 /**
209 * This function is used for building an
210 * SVG <line> tag
211 *
212 * @param int - the 'x1' attribute
213 * @param int - the 'y1' attribute
214 * @param int - the 'x2' attribute
215 * @param int - the 'y2' attribute
216 * @param string - the 'stroke' attribute
217 * @param string - the 'stroke-width' attribute
218 * @param string - the 'style' attribute
219 * @return LINEsvgtag object
220 * @link http://www.w3.org/TR/SVG/shapes.html
221 */
222 function svg_line($x1, $y1, $x2, $y2, $stroke=NULL,
223 $strokewidth, $style=NULL) {
224 $tag = new LINEsvgtag(array("x1" => $x1, "y1" => $y1,
225 "x2" => $x2, "y2" => $y2));
226 if ($stroke) {
227 $tag->set_tag_attribute("stroke", $stroke);
228 }
229 if ($strokewidth) {
230 $tag->set_tag_attribute("stroke-width", $strokewidth);
231 }
232 if ($style) {
233 $tag->set_style( $style );
234 }
235
236 return $tag;
237 }
238
239 /**
240 * This function is used for building an
241 * SVG <marker> tag
242 *
243 * @param string - the 'refX' attribute
244 * @param string - the 'refY' attribute
245 * @param string - the 'markerUnits' attribute
246 * @param string - the 'markerWidth' attribute
247 * @param string - the 'markerHeight' attribute
248 * @param string - the 'orient' attribute
249 * @return MARKERsvgtag object
250 * @link http://www.w3.org/TR/SVG/painting.html#MarkerElement
251 */
252 function svg_marker($refx, $refY, $markerunits=NULL,
253 $markerwidth=NULL, $markerheight=NULL,
254 $orient=NULL) {
255 $tag = new MARKERsvgtag( array("refx" => $refx,
256 "refy" => $refy));
257
258 if ($markerunits) {
259 $this->set_tag_attribute("markerUnits", $markerunits );
260 }
261 if ($markerwidth) {
262 $this->set_tag_attribute("markerWidth", $markerwidth );
263 }
264 if ($markerheight) {
265 $this->set_tag_attribute("markerHeight", $markerheight );
266 }
267 if ($orient) {
268 $this->set_tag_attribute("orient", $orient );
269 }
270
271 return $tag;
272 }
273
274 /**
275 * This function is used for building an
276 * SVG <polygon> tag
277 *
278 * @param int - the 'points' attribute
279 * @param string - the 'fill' attribute
280 * @param string - the 'stroke' attribute
281 * @param string - the 'stroke-width' attribute
282 * @param string - the 'style' attribute
283 * @return POLYGONsvgtag object
284 * @link http://www.w3.org/TR/SVG/shapes.html
285 */
286 function svg_polygon($points, $fill="none", $stroke=NULL,
287 $strokewidth, $style=NULL) {
288 $tag = new POLYGONsvgtag;
289
290 if ($fill) {
291 $tag->set_tag_attribute("fill", $fill);
292 }
293 if ($stroke) {
294 $tag->set_tag_attribute("stroke", $stroke);
295 }
296 if ($strokewidth) {
297 $tag->set_tag_attribute("stroke-width", $strokewidth);
298 }
299 if ($style) {
300 $tag->set_style( $style );
301 }
302
303 //do this instead of the constructor
304 //because the output is easier to read.
305 $tag->set_tag_attribute("points", $points);
306
307 return $tag;
308 }
309
310 /**
311 * This function is used for building an
312 * SVG <polyline> tag
313 *
314 * @param int - the 'points' attribute
315 * @param string - the 'fill' attribute
316 * @param string - the 'stroke' attribute
317 * @param string - the 'stroke-width' attribute
318 * @param string - the 'style' attribute
319 * @return POLYLINEsvgtag object
320 * @link http://www.w3.org/TR/SVG/shapes.html
321 */
322 function svg_polyline($points, $fill="none", $stroke=NULL,
323 $strokewidth, $style=NULL) {
324 $tag = new POLYLINEsvgtag;
325
326 if ($fill) {
327 $tag->set_tag_attribute("fill", $fill);
328 }
329 if ($stroke) {
330 $tag->set_tag_attribute("stroke", $stroke);
331 }
332 if ($strokewidth) {
333 $tag->set_tag_attribute("stroke-width", $strokewidth);
334 }
335 if ($style) {
336 $tag->set_style( $style );
337 }
338
339 //do this instead of the constructor
340 //because the output is easier to read.
341 $tag->set_tag_attribute("points", $points);
342
343 return $tag;
344 }
345
346
347 /**
348 * This function creates a <script>
349 * tag and wraps the javascript in the
350 * appropriate <![CDATA[ JAVASCRIPT ]]>
351 * that is required for svg.
352 *
353 * @param string the 'type' attribute
354 * @param mixed - any N number of params for
355 * content for the tag
356 * @return SCRIPTsvgtag object
357 */
358 function svg_script( $type="text/javascript" ) {
359 $tag = new SCRIPTsvgtag(array("type" => $type));
360 $num_args = func_num_args();
361 for ($i=1;$i<$num_args;$i++) {
362 $tag->add(func_get_arg($i));
363 }
364 return $tag;
365 }
366
367 /**
368 * This function creates a <script>
369 * tag and wraps the javascript in the
370 * appropriate <![CDATA[ JAVASCRIPT ]]>
371 * that is required for svg.
372 *
373 * @param string the 'type' attribute
374 * @param mixed - any N number of params for
375 * content for the tag
376 * @return SCRIPTsvgtag object
377 */
378 function svg_style( $type="text/css" ) {
379 $tag = new STYLEsvgtag(array("type" => $type));
380 $num_args = func_num_args();
381 for ($i=1;$i<$num_args;$i++) {
382 $tag->add(func_get_arg($i));
383 }
384 return $tag;
385 }
386
387
388 /**
389 * This function is used to build an
390 * SVG <rect> tag and its common
391 * attributes
392 *
393 * @param int - the 'x' attribute
394 * @param int - the 'y' attribute
395 * @param string - the 'width' attribute
396 * @param string - the 'height' attribute
397 * @param string - the 'fill' attribute
398 * @param string - the 'stroke' attribute
399 * @param string - the 'stroke-width' attribyte
400 * @param string - the 'style' attribyte
401 * @return RECTsvgtag object
402 * @link http://www.w3.org/TR/SVG/shapes.html
403 */
404 function svg_rect($x, $y, $width, $height, $fill=NULL,
405 $stroke=NULL, $strokewidth=NULL, $style=NULL) {
406 $tag = new RECTsvgtag( array("x" => $x, "y" => $y,
407 "width" => $width,
408 "height" => $height));
409 if ($fill) {
410 $tag->set_tag_attribute("fill", $fill);
411 }
412 if ($stroke) {
413 $tag->set_tag_attribute("stroke", $stroke);
414 }
415 if ($strokewidth) {
416 $tag->set_tag_attribute("stroke-width", $strokewidth);
417 }
418
419 if ($style) {
420 $tag->set_style($style);
421 }
422 return $tag;
423 }
424
425 /**
426 * This function is used to build an
427 * SVG <text> tag
428 *
429 * @param int - the 'x' attribute
430 * @param int - the 'y' attribute
431 * @param string - the 'rotate' attribute
432 * @param style - the 'class' attribute
433 * @param mixed - any N number of params for
434 * content for the tag
435 * @return TEXTsvgtag object.
436 * @link http://www.w3.org/TR/SVG/text.html
437 */
438 function svg_text($x, $y, $rotate=NULL, $class=NULL) {
439 $tag = new TEXTsvgtag( array("x" => $x, "y" => $y));
440 if ($rotate) {
441 $tag->set_tag_attribute( "rotate", $rotate );
442 }
443 if ($class) {
444 $tag->set_class( $class );
445 }
446 $num_args = func_num_args();
447 for ($i=4;$i<$num_args;$i++) {
448 $tag->add(func_get_arg($i));
449 }
450 return $tag;
451 }
452
453 /**
454 * This function is used to build an
455 * SVG <textpath> tag.
456 *
457 * @param string - the 'xlink:href' attribute
458 * @param string - the 'class' attribute
459 * @param mixed - any N number of params for
460 * content for the tag
461 * @return TEXTPATHsvgtag object.
462 * @link http://www.w3.org/TR/SVG/text.html#TextPathElement
463 */
464 function svg_textpath($xlinkhref, $class=NULL) {
465 $tag = new TEXTPATHsvgtag( array("xlink:href" => $xlinkhref));
466 if ($class) {
467 $tag->set_class( $class );
468 }
469 $num_args = func_num_args();
470 for ($i=2;$i<$num_args;$i++) {
471 $tag->add(func_get_arg($i));
472 }
473 return $tag;
474 }
475
476 /**
477 * This function is used to build an
478 * SVG <tref> tag
479 *
480 * @param string - the 'xlink:href' required attribute
481 * @param string - the 'class' attribute
482 * @param mixed - any N number of params for
483 * content for the tag
484 * @return TREFsvgtag object.
485 * @link http://www.w3.org/TR/SVG/text.html
486 */
487 function svg_tref($xlinkhref, $class=NULL) {
488 $tag = new TREFsvgtag( array("xlink:href" => $xlinkhref));
489 if ($class) {
490 $tag->set_class( $class );
491 }
492 $num_args = func_num_args();
493 for ($i=2;$i<$num_args;$i++) {
494 $tag->add(func_get_arg($i));
495 }
496 return $tag;
497 }
498
499 /**
500 * This function is used to build an
501 * SVG <tref> tag.
502 *
503 * @param string - the 'x' attribute
504 * @param string - the 'y' attribute
505 * @param string - the 'class' attribute
506 * @return TSPANsvgtag object.
507 * @link http://www.w3.org/TR/SVG/text.html
508 */
509 function svg_tspan($x, $y, $class=NULL) {
510 $tag = new TSPANsvgtag( array("x" => $x,
511 "y" => $y));
512 if ($class) {
513 $tag->set_class( $class );
514 }
515 return $tag;
516 }
517
518
519 ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed