4 * Copyright (C) 2002 Johannes Große
6 * This file is part of PhpWiki.
8 * PhpWiki is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * PhpWiki is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License along
19 * with PhpWiki; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 // +---------------------------------------------------------------------+
25 // +---------------------------------------------------------------------+
26 // | simple test of the WikiPluginCached class which provides a |
27 // | text to image conversion. |
28 // | This is a usage example of WikiPluginCached. |
30 // | You may copy this code freely under the conditions of the GPL |
31 // +---------------------------------------------------------------------+
33 /*------------------------------------------------------------------------
35 *------------------------------------------------------------------------
37 | You may call this plugin as follows:
39 | <<CacheTest text="What a wonderful test!" >>
42 /*-----------------------------------------------------------------------
46 *----------------------------------------------------------------------*/
48 /*-----------------------------------------------------------------------
49 | WikiPlugin_CacheTest
50 *----------------------------------------------------------------------*/
52 require_once "lib/WikiPluginCached.php";
54 class WikiPlugin_CacheTest
55 extends WikiPluginCached
57 /* --------- overwrite virtual or abstract methods ---------------- */
59 function getPluginType() {
60 return PLUGIN_CACHED_IMG_ONDEMAND;
67 function getDescription() {
68 return 'This is a simple example using WikiPluginCached.';
71 function getDefaultArguments() {
72 return array('text' => $this->getDescription(),
77 // should return image handle
79 // if an error occurs you MUST call
80 // $this->complain('aboutwhichidocomplain') you may produce an
81 // image handle to an error image if you do not,
82 // WikiPluginImageCache will do so.
84 function getImage($dbi, $argarray, $request) {
86 return $this->produceGraphics($text,$font);
88 // This should also work
89 // return $this->lazy_produceGraphics($text,$font);
93 function getImageType($dbi, $argarray, $request) {
95 if (in_array($type, array('png', 'gif', 'jpg'))) {
101 function getAlt($dbi, $argarray, $request) {
102 // ALT-text for <img> tag
107 function getExpire($dbi, $argarray, $request) {
108 return '+600'; // 600 seconds life time
112 /* -------------------- extremely simple converter -------------------- */
115 function produceGraphics($text, $font ) {
116 // The idea (and some code) is stolen from the text2png plugin
117 // but I did not want to use TTF. ImageString is quite ugly
118 // and quite compatible. It's only a usage example.
120 if ($font<1 || $font>5) {
121 $text = "Fontnr. (font=\"$font\") should be in range 1-5";
122 $this->complain($text);
126 $ok = ($im = @ImageCreate(400, 40));
127 $bg_color = ImageColorAllocate($im, 240, 240, 240);
128 $text_color1 = ImageColorAllocate($im, 120, 120, 120);
129 $text_color2 = ImageColorAllocate($im, 0, 0, 0);
131 ImageFilledRectangle($im, 0, 0, 149, 49, $bg_color);
132 ImageString($im, $font, 11, 12, $text, $text_color1);
133 ImageString($im, $font, 10, 10, $text, $text_color2);
136 // simple error handling by WikiPluginImageCache
137 $this->complain("Could not create image");
141 // image creation takes really _much_ time :-)
142 // so caching is very useful!
146 } // produce_Graphics
148 /* -------------------------------------------------------------------- */
150 // we could have used the simple built-in text2img function
151 // instead of writing our own:
153 function lazy_produceGraphics( $text, $font ) {
154 if ($font<1 || $font>5) {
155 $text = "Fontnr. (font=\"$font\") should be in range 1-5";
156 $this->complain($text);
161 return $this->text2img($text, $font, array(0, 0, 0),
162 array(255, 255, 255));
163 } // lazy_produceGraphics
171 // c-hanging-comment-ender-p: nil
172 // indent-tabs-mode: nil