Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; GeSHi has a deprecated constructor in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 158

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 796

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 1092

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 1117

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 1446

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 1448

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Markdown_Parser has a deprecated constructor in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/markdown.php on line 77

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2137

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/httpd/vhosts/graphicslab.org/httpdocs/blog/geshi/geshi.php on line 2147
Graphicslab's blog

Graphicslab's blog

« 1 2 3 4 5 6 »

Translucent drop shadows for text in Scribus

By a.l.e on 2011-09-27 08:50
[Scribus]

You will have a hard time to convince me that drop shadows are a good idea. but -- since so many people see to be wanting them -- let's find out how to them with Scribus.

First a bad news: Scribus does not have transparent drop shadows, yet! (and -- generally speaking -- text transparencies are not well supported by Scribus).

But, with a bit of work you can achieve this:

There is one big constraint: you will have to wait and create the drop shadow after having finished to edit and layout your text, since it won't be editable any more.

Let's go!

First, type your text in a text frame and set it to the correct size and color (You will probably also want to have a picture or a solid color in the background... otherwise the transparency does not make much sense).

Then, set an outline of a few percents for the whole frame:

Make a copy of the frame and remove the outline effect.

Now we have two frames with the same content and at the same place, one with the outline effect in the behind and one without in the front.

Click on the one behind by holding down the "ctrl" key while clicking on the area where the frames are (clicking with the "ctrl" key pressed will cycle through the items below the cursor: try it out!) and convert it to outlines ("Item > Convert to... > Outlines").

Select the group of outlines, ungroup it and without deselecting the items combine them ("Item > Combine polygons"; again, you have to press the "ctrl" key to reach the item in the background). Now you can select the combined shape, go to the Properties palette > Colors and set the opacity for the shadow's line color! (and, eventually, a different opacity for the text frame).

I wonder if all those steps can be recorded in a script...

Drehe deinen eigenen Stop-Motion Film!

By a.l.e on 2011-07-01 12:00
[Grafiklabor, Stop motion]

Toonloop
Drehe deinen eigenen Stop-Motion Film!
Sonntag, 3. Juli 2011, Dock 18, Rote Fabrik, Zürich

Alexandre Quessy -- Künstler und Programmierer aus Montreal -- hat sein Masterstudium noch nicht abgeschlossen, doch der praktische Teil seine Masterarbeit findet sich bereits in den Ubuntu-Repositories: Toonloop!

Toonloop ist ein minimalistisches und doch äusserst mächtiges Programm, das Stop-Motion Videos "dreht".

Sein Fokus liegt dabei auf der Live-Verarbeitung von Tanz-Aufführungen:

In unserem Workshop werden wir uns darauf begrenzen, kleine Gegenstände vor einer Webcam zum Leben zu erwecken:

Lego und Playmobil sind vorhanden, eigene Ideen und Objekte sind aber äussert willkommen! (Knetteig, Stoff, Papier-Farben-und-Schere oder Smarties...)

Ein Computer mit Webcam und Toonloop ist vorhanden (am bestens läuft Toonloop unter Ubuntu!) aber bringe auch deinen eigenen Laptop.

Jeden 1en Sonntag im Monat von 14 bis 18 Uhr trifft sich das Grafiklabor im Dock18, das Raum für Medienkultur der Welt in der Rote Fabrik

Drawing a simple eye with Inkscape

By a.l.e on 2011-06-08 21:25
[Inkscape]

Do you want to draw a simple clipart-like eye with Inkscape?

First, let's see how the final result will look like:

The first step is quite simple: draw three ellipses, one black and two white ones

You will probably want to rotate at least some of the elipses: click twice with the "Select and transform" tool on the ellipse to enable the "rotation" arrows.

You can set the color of the ellipse by clicking on the color toolbar at the bottom of the window.

Put the small white ellipse on top of the black one, select both ellipses and combine them with Path > Difference to make one single shape out of them.

Put the irid / pupil on top of the big white ellipse ("the eye")...

Click on the white ellipse, duplicate it (Edit > Duplicate), add the irid to the selection by clicking on it while the shift and alt key are pressed (the shift key extends the selection and the alt one allows select an object below another one covering it).

If everything is correctly selected, Path > Intersection will remove the "overflowing" part of the irid, delete the duplicated big ellipse and let the original big ellipse show up again, below the irid). If you get a "wrong" result, you can use the undo function (ctrl+z) to go back to the previous shapes.

Finally, since you want two eyes, duplicate the result, mirror it (Object > Flip horizontal) and move it to the right with the right arrow key.

Ah, no, that was not my final goal... I wanted to draw a turtle!

Isn't it cute?

P.S.: if you prefer it as a video, here it is!

No more Copy of copy of a style in Scribus

By a.l.e on 2011-05-14 18:00
[Scribus]

Many years ago, I used to layout a student magazine with Page Maker. One of the nastiest bugs I was experiencing at that time, was triggered by deleting in "a non carefully" way on of the several copy of copy of styles "automatically" created by the software: the application crashed and the file was not readable anymore! Yes, this means I had to restart the job from zero (or grab a backup: I've learned to do backups every two hours the hard way...)

It was funny to see Scribus developing the same illness and we were lucky that it didn't get to the point of corrupting my files (in the contrary, the Scribus file format being some sort of XML, it was easy to suppress them with a text editor... but that's another story).

I'll try to avoid to get sentimental, now.

Actually, I have a good news for you: you won't get any copy of copy any more!

Well, it may not be 100% correct: Jean has just fixed a corner case where styles with tabs would duplicate on copying a frame containing them (https://bugs.scribus.net/view.php?id=9979)! Crazy, isn't it? I'm still wondering if there is any other such hitch hiding somewhere in the Scribus code? We can't be sure, but it's really comforting to see these remaining bugs being fixed that fast!

I'm awaiting the times without copy of copy of nightmares and start dreaming of a sunny world with Scribus 1.4!

Adding the repeatText() command to the Scribus Scripter

By a.l.e on 2011-05-13 08:00
[Scribus, Scripter]

In the previous post we have being laying down the foundations for the repeatText() command by adding the new repeatText() command in scriptplugin.cpp, creating its signature in cmdtext.h, and adding an empty function in cmdtext.cpp.

As we wrote in our first post in this series we will use the existing setFontSize() command as a reference.
Let's skim through the structure of setFontSize():

We can spot four steps:

Let's get back to repeatText in cmdtext.cpp. In the last post we have left it empty:

PyObject *scribus_repeattext(PyObject* /* self */

We can now fill it with the actual code.

Reading the parameters

Our first step is reading the parameters:

PyObject *scribus_repeattext(PyObject* /* self */"""d|es", &count, "utf-8"


Similar to setFontSize, repeatText() also accepts two parameters:

  • a number of repetitions, which are defined as digits and are stored into the count variable
  • optionally, the name for the frame to be edited (if none is specified, the current selection is used).

First, we define both the Name and count variables (don't ask me how the Scribus programmers are choosing the capitalization of the variable names!), then we use the PyArg_ParseTuple function to fill them:

  • args, the first parameter, is the list of arguments as passed to the scribus_repeattext() function.
  • "d|es" is a string defining which parameters the repeatText command accepts. The d represents a digit, the es is an encoded string (encoded in the sense that it will accept non ASCII characters) and the pipe (|) separates the fields.
  • the remaining parameters are both used for getting the values back from PyArg_ParseTuple (count and Name are passed by reference and will contain the values from args once PyArg_ParseTuple has been executed) and for further specifying how PyArg_ParseTuple should be handle the parameters ("utf-8" is the encoding to be applied to Name)
    You can read more about PyArg_ParseTuple in the Python/C API Reference Manual.

Checking the parameters

PyObject *scribus_repeattext(PyObject* /* self */"Repetition count out of bounds - must be 1 <= count <= 512.","python error"

The simple tests we are doing are:

  • Checking that a document is open (checkHaveDocument())
  • check that count is between 1 and 512 (the upper bound is just a made up value...)

If the conditions are not met, the functions stops. If count is out of bound, an error message is produced.

Getting the frame

The Name variable we have read from args defines the frame to be edited:

  • if Name is an empty string the currently active frame will be used (if one is selected)
  • otherwise, the frame identified by Name will be used (if it exists)
PyObject *scribus_repeattext(PyObject* /* self */"Cannot repeat text for a non-text frame.","python error"

We are using the GetUniqueItem() function to get the frame we will be acting upon and then check if the frame exists and if it is a text frame.

Doing the work

We are now ready to actually implement our command. We will have to:

  • read the current content of the frame (or the current text selection)
  • append count copies to the string
  • put the new content into the frame

Before reading the text to be repeated, we make sure that the target frame is selected. This is the case when acting on the current item, but not likely when the name of the target frame is passed in the Name parameter.
Again, we can take getFontSize() as the example for our implementation:

 
  • We store the current state of the Program in the Apm variable, we set it to modeEdit if the frame has a selection and -- at the end of this snippet -- restore the initial state as stored in Apm
  • We clear the current frame selection (in the case on ore more frames are selected) and set the selection to the target item (m_Selection->addItem(i)) and -- at last -- remove all selections (view->Deselect())

Now, we just to replace the [...] with the "real" code which gets the text, repeats it and puts it back into the frame.

In order to know how to read the text, we look at the scribus_gettext() method, defined in cmdtext.cpp:

QString text = ""// for

Looks exactly what we are looking for! We just have to replace the name of the PageItem variable from it with the i we are using.

For the next step, the Qt manual teaches us how to repeat a QString:

text = text.repeated(count);

(http://doc.qt.nokia.com/latest/qstring.html#repeated)

From the scribus_setboxtext() method we can learn how to set the text of a frame:

 

Here we have to replace currItem->itemText through i.

Let's put the pieces together:

PyObject *scribus_repeattext(PyObject* /* self */""// for

That's it! Now, you can start hacking on the Scribus Scripter API. As you have noticed in this artricle, when you add a new command you can probably do most of your work by looking at existing methods which do similar things.

Happy hacking!

Grafiklabor am 1. Mai 2011: Your message in a bottle

By a.l.e on 2011-04-29 16:30
[Grafiklabor, LGM]

Am 10. Mai fängt das Libre Graphics Meeting Nr. 6 an!

http://www.libregraphicsmeeting.org/2011/

Ich werde nächste Woche nach Montréal fliegen und würde mich freuen, euere Wünsche, Anregungen oder Grüsse in meinen Koffer mitzunehmen.

Ihr seid alle herzlich eingeladen, am nächsten Sonntag im Dock 18 vorbeizuschauen oder mir ein Email mit euren Botschaften in Form von Bildern, Texten, Geräuschen, ... zu schicken.

Bis am Sonntag um 14 Uhr im Dock 18!

« 1 2 3 4 5 6 »