fxruby 1.6.13-mswin32 → 1.6.14-mswin32

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,18 +1,18 @@
1
1
  <html><head>
2
2
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
3
- <title>Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="pt02.html" title="Part&nbsp;II.&nbsp;Appendices"><link rel="prev" href="differences.html" title="Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby"><link rel="next" href="implementation.html" title="Appendix&nbsp;E.&nbsp;Implementation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="differences.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;II.&nbsp;Appendices</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="implementation.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="library"></a>Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</h2></div></div></div><p>While the majority of FXRuby is in fact implemented by an extension module, some parts are provided instead by "pure Ruby" code. This section describes the classes and modules available in the FXRuby standard library.</p><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5324"></a>Undoable Commands</h2></div></div></div><p>The <code class="filename">fox16/undolist.rb</code> file provides the <code class="classname">FXCommand</code> and <code class="classname">FXUndoList</code> classes. These serve the same purpose as the <code class="classname">FXCommand</code> and <code class="classname">FXUndoList</code> classes from the standard FOX distribution, but they're implemented entirely in Ruby.</p><p>For a complete description of these classes and how to use them, see the RD documentation in <code class="filename">fox16/undolist.rb</code>.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5349"></a>Aliases</h2></div></div></div><p>The <code class="filename">fox16/aliases.rb</code> implements most of the accessor-style aliases for methods. This file is loaded automatically when you </p><pre class="programlisting">require 'fox16'</pre><p> and so you should never need to load it directly.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5360"></a>Color Names</h2></div></div></div><p>The <code class="filename">fox16/colors.rb</code> file, contributed by Jeff
3
+ <title>Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="pt02.html" title="Part&nbsp;II.&nbsp;Appendices"><link rel="prev" href="differences.html" title="Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby"><link rel="next" href="implementation.html" title="Appendix&nbsp;E.&nbsp;Implementation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="differences.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;II.&nbsp;Appendices</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="implementation.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="library"></a>Appendix&nbsp;D.&nbsp;The FXRuby Standard Library</h2></div></div></div><p>While the majority of FXRuby is in fact implemented by an extension module, some parts are provided instead by "pure Ruby" code. This section describes the classes and modules available in the FXRuby standard library.</p><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5373"></a>Undoable Commands</h2></div></div></div><p>The <code class="filename">fox16/undolist.rb</code> file provides the <code class="classname">FXCommand</code> and <code class="classname">FXUndoList</code> classes. These serve the same purpose as the <code class="classname">FXCommand</code> and <code class="classname">FXUndoList</code> classes from the standard FOX distribution, but they're implemented entirely in Ruby.</p><p>For a complete description of these classes and how to use them, see the RD documentation in <code class="filename">fox16/undolist.rb</code>.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5398"></a>Aliases</h2></div></div></div><p>The <code class="filename">fox16/aliases.rb</code> implements most of the accessor-style aliases for methods. This file is loaded automatically when you </p><pre class="programlisting">require 'fox16'</pre><p> and so you should never need to load it directly.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5409"></a>Color Names</h2></div></div></div><p>The <code class="filename">fox16/colors.rb</code> file, contributed by Jeff
4
4
  Heard, provides a bunch of predefined color values (based on the standard
5
5
  X11 color names). You can use these color constants anywhere that FOX
6
6
  expects an RGB color value, e.g.</p><pre class="programlisting">dc = FXDCWindow.new(drawable, ev)
7
7
  dc.foreground = FXColor::MistyRose # instead of FXRGB(255, 228, 225)
8
- dc.background = FXColor::MidnightBlue # instead of FXRGB( 25, 25, 112)</pre></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5370"></a>OpenGL Shapes</h2></div></div></div><p>The <code class="filename">fox16/glshapes.rb</code> library provides Ruby
8
+ dc.background = FXColor::MidnightBlue # instead of FXRGB( 25, 25, 112)</pre></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5419"></a>OpenGL Shapes</h2></div></div></div><p>The <code class="filename">fox16/glshapes.rb</code> library provides Ruby
9
9
  implementations of a number of basic 3-D shapes (all derived from the
10
10
  built-in <code class="classname">FXGLShape</code> class) that can be used with
11
11
  the <code class="classname">FXGLViewer</code>. Several of these shapes are used
12
12
  in the <code class="filename">glviewer.rb</code> example program. These shapes
13
13
  were originally implemented in C++ and wrapped using SWIG, but they are
14
14
  straightforward enough to implement in Ruby so they were moved out to
15
- this library instead.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5387"></a>Iterators</h2></div></div></div><p>The <code class="filename">fox16/iterators.rb</code> library just adds an
15
+ this library instead.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5436"></a>Iterators</h2></div></div></div><p>The <code class="filename">fox16/iterators.rb</code> library just adds an
16
16
  <code class="methodname">each</code> instance method for the <code class="classname">
17
17
  FXComboBox</code>, <code class="classname">FXGLGroup</code>, <code class="classname">
18
18
  FXHeader</code>, <code class="classname">FXIconList</code>, <code class="classname">
@@ -21,10 +21,10 @@ dc.background = FXColor::MidnightBlue # instead of FXRGB( 25, 25, 112)</pre><
21
21
  FXTreeList</code> and <code class="classname">FXTreeListBox</code> classes,
22
22
  so that you can iterate over their members in a Ruby-friendly way. It
23
23
  also mixes the <code class="classname">Enumerable</code> module into each of
24
- these classes.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5431"></a>Key Codes</h2></div></div></div><p>The <code class="filename">fox16/keys.rb</code> library file defines all of the
24
+ these classes.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5480"></a>Key Codes</h2></div></div></div><p>The <code class="filename">fox16/keys.rb</code> library file defines all of the
25
25
  key codes (e.g. <code class="constant">KEY_space</code>) that might show up in the
26
26
  code field of an <code class="classname">FXEvent</code> instance. This file is
27
27
  loaded automatically when you
28
28
  </p><pre class="programlisting">require 'fox16'</pre><p> and
29
29
  so you should never need to load it
30
- directly.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5448"></a>Calendar Widget</h2></div></div></div><p>The <code class="filename">fox16/calendar.rb</code> library file provides the <code class="classname">FXCalendar</code> widget, contributed by David Naseby.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="differences.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="implementation.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="book.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Appendix&nbsp;E.&nbsp;Implementation</td></tr></table></div></body></html>
30
+ directly.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5497"></a>Calendar Widget</h2></div></div></div><p>The <code class="filename">fox16/calendar.rb</code> library file provides the <code class="classname">FXCalendar</code> widget, contributed by David Naseby.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="differences.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="implementation.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="book.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Appendix&nbsp;E.&nbsp;Implementation</td></tr></table></div></body></html>
@@ -5,10 +5,10 @@
5
5
  widgets, and FXRuby in turn provides interfaces to those classes. By
6
6
  combining FXRuby with the OpenGL interface for Ruby (described below) you
7
7
  can develop very powerful 3-D graphics applications. This chapter gives
8
- you the information you'll need to get started.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4426"></a>What is OpenGL?</h2></div></div></div><p>OpenGL is a platform-independent API for 2D and 3D graphics. The
8
+ you the information you'll need to get started.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4475"></a>What is OpenGL?</h2></div></div></div><p>OpenGL is a platform-independent API for 2D and 3D graphics. The
9
9
  home page is <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.opengl.org" target="_top">http://www.opengl.org</a>. Because it's a
10
10
  fairly open standard, highly optimized OpenGL drivers are available for
11
- most operating systems (including Windows and Linux).</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4434"></a>OpenGL Extensions for Ruby</h2></div></div></div><p>This extension module, developed by Yoshiyuki Kusano, provides
11
+ most operating systems (including Windows and Linux).</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4483"></a>OpenGL Extensions for Ruby</h2></div></div></div><p>This extension module, developed by Yoshiyuki Kusano, provides
12
12
  interfaces to not only the basic OpenGL API, but also the GLU and GLUT
13
13
  APIs. As of this writing, the currently released version is 0.32d and is
14
14
  available for download from <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www2.giganet.net/~yoshi/rbogl-0.32b.tgz" target="_top">http://www2.giganet.net/~yoshi/rbogl-0.32d.tgz</a>.
@@ -25,7 +25,7 @@
25
25
  extensions by typing:</p><pre class="screen">$ <span><strong class="command">make site-install</strong></span></pre><p>Please note that I'm not the maintainer of this particular Ruby
26
26
  extension, so I can't really accept bug fixes for it. But if you're having
27
27
  trouble integrating Ruby/OpenGL with FXRuby, let me know and we'll see
28
- what we can do.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4489"></a>The FXGLVisual Class</h2></div></div></div><p>An <code class="classname">FXGLVisual</code> object describes the
28
+ what we can do.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4538"></a>The FXGLVisual Class</h2></div></div></div><p>An <code class="classname">FXGLVisual</code> object describes the
29
29
  capabilities of an <code class="classname">FXGLCanvas</code> or
30
30
  <code class="classname">FXGLViewer</code> window. Typically, an X server supports
31
31
  many different visuals with varying capabilities, but the ones with
@@ -58,13 +58,13 @@ end</pre><p>Some <code class="classname">FXGLVisual</code> object must be associ
58
58
  separate <code class="classname">FXGLVisual</code> object for each window. For
59
59
  most applications, you can just construct a single
60
60
  <code class="classname">FXGLVisual</code> object that's shared among all the
61
- OpenGL windows.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4548"></a>The FXGLCanvas Class</h2></div></div></div><p>The <code class="classname">FXGLCanvas</code> widget provides a very simple
61
+ OpenGL windows.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4597"></a>The FXGLCanvas Class</h2></div></div></div><p>The <code class="classname">FXGLCanvas</code> widget provides a very simple
62
62
  OpenGL-capable window with minimal functionality. To construct an
63
63
  <code class="classname">FXGLCanvas</code>, call
64
64
  <code class="methodname">FXGLCanvas.new</code>:</p><pre class="programlisting">glCanvas = FXGLCanvas.new(parent, vis)</pre><p>The first argument to <code class="methodname">FXGLCanvas.new</code> is the
65
65
  parent (container) widget and the second argument is the
66
66
  <code class="classname">FXGLVisual</code> that should be used for this
67
- window.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4572"></a>OpenGL objects and the FXGLViewer</h2></div></div></div><p>The <code class="classname">FXGLViewer</code> widget provides a higher-level
67
+ window.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4621"></a>OpenGL objects and the FXGLViewer</h2></div></div></div><p>The <code class="classname">FXGLViewer</code> widget provides a higher-level
68
68
  OpenGL-capable window with a lot of built-in functionality. To construct
69
69
  an <code class="classname">FXGLViewer</code>, call
70
70
  <code class="methodname">FXGLViewer.new</code>:</p><pre class="programlisting">glViewer = FXGLViewer.new(parent, vis)</pre><p>The first argument to <code class="methodname">FXGLViewer.new</code> is the
@@ -1,3 +1,3 @@
1
1
  <html><head>
2
2
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
3
- <title>Part&nbsp;II.&nbsp;Appendices</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="prev" href="changes.html" title="Chapter&nbsp;10.&nbsp;Change History"><link rel="next" href="opengl.html" title="Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part&nbsp;II.&nbsp;Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="changes.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="opengl.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e4411"></a>Part&nbsp;II.&nbsp;Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="appendix"><a href="opengl.html">A. Using OpenGL with FXRuby</a></span></dt><dt><span class="appendix"><a href="scintilla.html">B. Using Scintilla with FXRuby</a></span></dt><dt><span class="appendix"><a href="differences.html">C. Differences between FOX and FXRuby</a></span></dt><dt><span class="appendix"><a href="library.html">D. The FXRuby Standard Library</a></span></dt><dt><span class="appendix"><a href="implementation.html">E. Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="implementation.html#d0e5462">Code Generation</a></span></dt><dt><span class="section"><a href="apes02.html">Object Life Cycles and Garbage Collection</a></span></dt><dd><dl><dt><span class="section"><a href="apes02.html#d0e5500">GL Objects</a></span></dt></dl></dd><dt><span class="section"><a href="apes03.html">Virtual Functions</a></span></dt></dl></dd><dt><span class="appendix"><a href="subversion.html">F. Getting the Sources from Subversion</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="changes.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="opengl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;10.&nbsp;Change History&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="book.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby</td></tr></table></div></body></html>
3
+ <title>Part&nbsp;II.&nbsp;Appendices</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="prev" href="changes.html" title="Chapter&nbsp;10.&nbsp;Change History"><link rel="next" href="opengl.html" title="Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part&nbsp;II.&nbsp;Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="changes.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="opengl.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e4460"></a>Part&nbsp;II.&nbsp;Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="appendix"><a href="opengl.html">A. Using OpenGL with FXRuby</a></span></dt><dt><span class="appendix"><a href="scintilla.html">B. Using Scintilla with FXRuby</a></span></dt><dt><span class="appendix"><a href="differences.html">C. Differences between FOX and FXRuby</a></span></dt><dt><span class="appendix"><a href="library.html">D. The FXRuby Standard Library</a></span></dt><dt><span class="appendix"><a href="implementation.html">E. Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="implementation.html#d0e5511">Code Generation</a></span></dt><dt><span class="section"><a href="apes02.html">Object Life Cycles and Garbage Collection</a></span></dt><dd><dl><dt><span class="section"><a href="apes02.html#d0e5549">GL Objects</a></span></dt></dl></dd><dt><span class="section"><a href="apes03.html">Virtual Functions</a></span></dt></dl></dd><dt><span class="appendix"><a href="subversion.html">F. Getting the Sources from Subversion</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="changes.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="opengl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;10.&nbsp;Change History&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="book.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby</td></tr></table></div></body></html>
@@ -1,12 +1,12 @@
1
1
  <html><head>
2
2
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
3
- <title>Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="pt02.html" title="Part&nbsp;II.&nbsp;Appendices"><link rel="prev" href="opengl.html" title="Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby"><link rel="next" href="differences.html" title="Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="opengl.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;II.&nbsp;Appendices</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="differences.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="scintilla"></a>Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</h2></div></div></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4599"></a>What is Scintilla?</h2></div></div></div><p><a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.scintilla.org" target="_top">Scintilla</a> is a free
3
+ <title>Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook v5 XSL Stylesheets V1.72.0"><link rel="start" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="pt02.html" title="Part&nbsp;II.&nbsp;Appendices"><link rel="prev" href="opengl.html" title="Appendix&nbsp;A.&nbsp;Using OpenGL with FXRuby"><link rel="next" href="differences.html" title="Appendix&nbsp;C.&nbsp;Differences between FOX and FXRuby"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="opengl.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;II.&nbsp;Appendices</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="differences.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="scintilla"></a>Appendix&nbsp;B.&nbsp;Using Scintilla with FXRuby</h2></div></div></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4648"></a>What is Scintilla?</h2></div></div></div><p><a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.scintilla.org" target="_top">Scintilla</a> is a free
4
4
  source code editing component developed by Neil Hodgson for the Win32 and
5
- GTK+ platforms.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4606"></a>What is FXScintilla?</h2></div></div></div><p><a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://savannah.gnu.org/projects/fxscintilla" target="_top">FXScintilla </a> is
5
+ GTK+ platforms.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4655"></a>What is FXScintilla?</h2></div></div></div><p><a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://savannah.gnu.org/projects/fxscintilla" target="_top">FXScintilla </a> is
6
6
  a FOX widget that wraps around the Scintilla component, or, if you wish,
7
7
  the FOX "port" of Scintilla. Until recently it was developed by Gilles Filippini,
8
8
  and as of this writing the latest release is available for download from
9
- <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-1.71.tar.gz" target="_top">http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-1.71.tar.gz</a>.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4616"></a>Compiling FXScintilla</h2></div></div></div><p>The FXScintilla distribution contains everything you need to build
9
+ <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-1.71.tar.gz" target="_top">http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-1.71.tar.gz</a>.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4665"></a>Compiling FXScintilla</h2></div></div></div><p>The FXScintilla distribution contains everything you need to build
10
10
  the FXScintilla widget and begin using it in your C++-based FOX
11
11
  applications. That is to say, you do not have to separately download the
12
12
  Scintilla source code from the Scintilla home page. When you unpack the
@@ -17,7 +17,7 @@
17
17
  other open-source software (like FOX) from the source code. The
18
18
  <code class="filename">INSTALL</code> file in the top-level directory should
19
19
  provide enough instruction for you to build and install FXScintilla for
20
- either Unix or Microsoft Windows.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4629"></a>Enabling FXScintilla Support in FXRuby</h2></div></div></div><p>The next step is to build a version of FXRuby (from its source code)
20
+ either Unix or Microsoft Windows.</p></div><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e4678"></a>Enabling FXScintilla Support in FXRuby</h2></div></div></div><p>The next step is to build a version of FXRuby (from its source code)
21
21
  with the optional FXScintilla support enabled. If you're working on a Unix
22
22
  or Linux system and have installed FXScintilla in one of the standard
23
23
  installation directories (e.g. under <code class="filename">/usr/include</code> or <code class="filename">/usr/local/include</code>), the regular FXRuby build
@@ -14,7 +14,7 @@
14
14
  <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://svnbook.red-bean.com/" target="_top">book</a>.</p><p>You're also going to need to have a working <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.swig.org/" target="_top">SWIG</a> installation so that you can
15
15
  generate the C++ source files from the SWIG interface files. As of this
16
16
  writing, FXRuby requires SWIG version 1.3.22; later versions of SWIG will
17
- not work, nor will versions earlier than about 1.3.15.</p><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5645"></a>Checking out the code</h2></div></div></div><p>To check out the development version (i.e. the trunk) for FXRuby,
17
+ not work, nor will versions earlier than about 1.3.15.</p><div class="simplesect" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e5694"></a>Checking out the code</h2></div></div></div><p>To check out the development version (i.e. the trunk) for FXRuby,
18
18
  type the following command:</p><pre class="screen">svn checkout svn://rubyforge.org/var/svn/fxruby/trunk/FXRuby</pre><p>Next, you'll need to use SWIG to generate the C++ source code from
19
19
  the SWIG interface files. To do that, type:</p><pre class="screen">rake swig</pre><p>At this point, you should be ready to change to the top-level
20
20
  directory and go through the normal build and installation process, as
@@ -46,7 +46,7 @@ class Babelfish < FXMainWindow
46
46
  TRANSLATIONS.keys.each do |key|
47
47
  @transModeCombo.appendItem(key, TRANSLATIONS[key])
48
48
  end
49
- btn = FXButton.new(controlsFrame, "Translate", :opts => BUTTON_NORMAL|LAYOUT_SIDE_RIGHT)
49
+ btn = FXButton.new(controlsFrame, "Translate", :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
50
50
  btn.connect(SEL_COMMAND) do
51
51
  transMode = @transModeCombo.getItemData(@transModeCombo.currentItem)
52
52
  getApp().beginWaitCursor() do
@@ -0,0 +1,170 @@
1
+ require 'fox16'
2
+
3
+ include Fox
4
+
5
+ class CustomTableItem < FXTableItem
6
+ def drawContent(table, dc, x, y, w, h)
7
+ puts "in drawContent()"
8
+ hg = table.horizontalGridShown?
9
+ vg = table.verticalGridShown?
10
+ ml = table.marginLeft + (vg ? 1 : 0)
11
+ mt = table.marginTop + (hg ? 1 : 0)
12
+ mr = table.marginRight
13
+ mb = table.marginBottom
14
+ font = dc.font
15
+ lbl = text
16
+ icn = icon
17
+
18
+ # Text width and height
19
+ beg, tw, th = 0, 0, 0
20
+ begin
21
+ _end = beg;
22
+ _end += 1 while _end < lbl.length && lbl[_end].chr != '\n'
23
+ t = font.getTextWidth(lbl[beg..._end])
24
+ tw = t if t > tw
25
+ th += font.fontHeight
26
+ beg = _end + 1
27
+ end while _end < lbl.length
28
+
29
+ # Icon size
30
+ iw, ih = 0, 0
31
+ unless icn.nil?
32
+ iw = icn.width
33
+ ih = icn.height
34
+ end
35
+
36
+ # Icon-text spacing
37
+ s = 0
38
+ s = 4 if (iw > 0 && tw > 0)
39
+
40
+ # Fix x coordinate
41
+ if justify & LEFT == 1
42
+ case iconPosition
43
+ when BEFORE
44
+ ix = x + ml
45
+ tx = ix + iw + s
46
+ when AFTER
47
+ tx = x + ml
48
+ ix = tx + tw + s
49
+ else
50
+ ix = x + ml
51
+ tx = x + ml
52
+ end
53
+ elsif justify & RIGHT == 1
54
+ case iconPosition
55
+ when BEFORE
56
+ tx = x + w - mr - tw
57
+ ix = tx - iw - s
58
+ when AFTER
59
+ ix = x + w - mr - iw
60
+ tx = ix - tw - s
61
+ else
62
+ ix = x + w - mr - iw
63
+ tx = x + w - mr - tw
64
+ end
65
+ else
66
+ case iconPosition
67
+ when BEFORE
68
+ ix = x + (ml + w - mr)/2 - (tw + iw + s)/2
69
+ tx = ix + iw + s
70
+ when AFTER
71
+ tx = x + (ml + w - mr)/2 - (tw + iw + s)/2
72
+ ix = tx + tw + s
73
+ else
74
+ ix = x + (ml + w - mr)/2 - iw/2
75
+ tx = x + (ml + w - mr)/2 -tw/2
76
+ end
77
+ end
78
+
79
+ # Fix y coordinate
80
+ if justify & TOP == 1
81
+ case iconPosition
82
+ when ABOVE
83
+ iy = y + mt
84
+ ty = iy + ih
85
+ when BELOW
86
+ ty = y + mt
87
+ iy = ty + th
88
+ else
89
+ iy = y + mt
90
+ ty = y + mt
91
+ end
92
+ elsif justify & BOTTOM == 1
93
+ case iconPosition
94
+ when ABOVE
95
+ ty = y + h - mb - th
96
+ iy = ty - ih
97
+ when BELOW
98
+ iy = y + h - mb - ih
99
+ ty = iy - th
100
+ else
101
+ iy = y + h - mb - ih
102
+ ty = y + h - mb - th
103
+ end
104
+ else
105
+ case iconPosition
106
+ when ABOVE
107
+ iy = y + (mt + h - mb)/2 - (th + ih)/2
108
+ ty = iy + ih
109
+ when BELOW
110
+ ty = y + (mt + h - mb)/2 - (th + ih)/2
111
+ iy = ty + th
112
+ else
113
+ iy = y + (mt + h - mb)/2 - ih/2
114
+ ty = y + (mt + h - mb)/2 - th/2
115
+ end
116
+ end
117
+
118
+ # Paint icon
119
+ dc.drawIcon(icn, ix, iy) unless icn.nil?
120
+
121
+ # Text color
122
+ if selected?
123
+ dc.foreground = table.selTextColor
124
+ else
125
+ dc.foreground = table.textColor
126
+ end
127
+ puts "dc.foreground = (#{FXREDVAL(dc.foreground)}, #{FXGREENVAL(dc.foreground)}, #{FXBLUEVAL(dc.foreground)})"
128
+
129
+ # Draw text
130
+ yy = ty + font.fontAscent
131
+ beg = 0
132
+ begin
133
+ _end = beg
134
+ _end += 1 while _end < lbl.length && lbl[_end].chr != '\n'
135
+ if justify & LEFT == 1
136
+ xx = tx
137
+ elsif justify & RIGHT == 1
138
+ xx = tx + tw - font.getTextWidth(lbl[beg..._end])
139
+ else
140
+ xx = tx + (tw - font.getTextWidth(lbl[beg..._end]))/2
141
+ end
142
+ dc.drawText(xx, yy, lbl[beg..._end])
143
+ yy += font.fontHeight
144
+ beg = _end + 1
145
+ end while _end < lbl.length
146
+ end
147
+ end
148
+
149
+ class CustomTable < FXTable
150
+ def createItem *parameters
151
+ CustomTableItem.new *parameters
152
+ end
153
+ end
154
+
155
+ app = FXApp.new
156
+ main = FXMainWindow.new app, 'Test'
157
+
158
+ table = CustomTable.new main
159
+ table.setTableSize 2, 2
160
+ table.visibleRows = 2
161
+ table.visibleColumns = 2
162
+
163
+ table.setItemText 0, 0, 'one'
164
+ table.setItemText 0, 1, 'two'
165
+ table.setItemText 1, 0, 'three'
166
+ table.setItemText 1, 1, 'four'
167
+
168
+ app.create
169
+ main.show PLACEMENT_SCREEN
170
+ app.run
@@ -3,13 +3,13 @@
3
3
  require 'fox16'
4
4
  require 'open-uri'
5
5
  begin
6
- require 'rubyful_soup'
6
+ require 'hpricot'
7
7
  rescue LoadError
8
8
  require 'fox16/missingdep'
9
9
  MSG = <<EOM
10
- Sorry, this example depends on the RubyfulSoup extension. Please
11
- check the Ruby Application Archives for an appropriate
12
- download site.
10
+ Sorry, this example depends on the Hpricot extension. Please
11
+ see http://code.whytheluckystiff.net/hpricot/ for instructions
12
+ on how to install Hpricot.
13
13
  EOM
14
14
  missingDependency(MSG)
15
15
  end
@@ -40,9 +40,8 @@ class DailyDilbert < FXMainWindow
40
40
  end
41
41
 
42
42
  def image_data
43
- src = open("http://www.dilbert.com/").read
44
- soup = BeautifulSoup.new(src)
45
- url = soup.find('img', { :attrs => { 'alt' => /Today's Comic/ } })
43
+ doc = Hpricot(open("http://www.dilbert.com/"))
44
+ url = doc.search("img").find { |e| e['alt'] =~ /Today's Comic/ }
46
45
  open("http://www.dilbert.com" + url['src'], "rb").read
47
46
  end
48
47
 
@@ -87,11 +87,6 @@ class TableWindow < FXMainWindow
87
87
  filemenu = FXMenuPane.new(self)
88
88
  FXMenuCommand.new(filemenu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
89
89
  FXMenuTitle.new(menubar, "&File", nil, filemenu)
90
- extract = FXMenuCommand.new(filemenu, "Extract")
91
- extract.connect(SEL_COMMAND) do
92
- result = @table.extractText(0, @table.numRows-1, 0, @table.numColumns-1)
93
- puts result
94
- end
95
90
 
96
91
  # Options Menu
97
92
  tablemenu = FXMenuPane.new(self)
Binary file
@@ -2402,6 +2402,17 @@ module Fox
2402
2402
  params = default_params.merge(params)
2403
2403
  old_initialize(p, params[:target], params[:selector], params[:opts], params[:x], params[:y], params[:width], params[:height], params[:padLeft], params[:padRight], params[:padTop], params[:padBottom], &blk)
2404
2404
  end
2405
+ alias old_findText findText
2406
+ def findText(string, *args)
2407
+ argument_names = %w{start flags}
2408
+ default_params = { :start => 0, :flags => SEARCH_FORWARD|SEARCH_WRAP|SEARCH_EXACT }
2409
+ params = {}
2410
+ params = args.pop if args.last.is_a? Hash
2411
+ args.each_with_index { |e, i| params[argument_names[i].intern] = e }
2412
+ params.keys.each { |key| raise ArgumentError, "Unrecognized parameter #{key}" unless default_params.keys.include?(key) }
2413
+ params = default_params.merge(params)
2414
+ old_findText(string, params[:start], params[:flags])
2415
+ end
2405
2416
  end
2406
2417
 
2407
2418
  class FXTextField
@@ -3,7 +3,7 @@ module Fox
3
3
  # Returns the FXRuby version number as a string, e.g. "1.0.19".
4
4
  #
5
5
  def Fox.fxrubyversion
6
- "1.6.13"
6
+ "1.6.14"
7
7
  end
8
8
  end
9
9
 
@@ -113,7 +113,8 @@ module Fox
113
113
  def release(); end
114
114
 
115
115
  #
116
- # Rescale pixels image to the specified width and height. Note that this
116
+ # Rescale pixels image to the specified width and height and then
117
+ # re-render the server-side image from the client-side pixel buffer. Note that this
117
118
  # serves a slightly different purpose than the base class resize() method,
118
119
  # which simply resizes the client-side pixel data buffer but doesn't
119
120
  # transform the image.
@@ -132,7 +133,8 @@ module Fox
132
133
  def scale(w, h, quality=0) ; end
133
134
 
134
135
  #
135
- # Mirror image horizontally and/or vertically.
136
+ # Mirror image horizontally and/or vertically and then re-render the
137
+ # server-side image from the client-side pixel buffer.
136
138
  #
137
139
  # ==== Parameters:
138
140
  #
@@ -142,7 +144,8 @@ module Fox
142
144
  def mirror(horizontal, vertical) ; end
143
145
 
144
146
  #
145
- # Rotate image counter-clockwise by some number of degrees.
147
+ # Rotate image counter-clockwise by some number of degrees and then
148
+ # re-render the server-side image from the client-side pixel buffer.
146
149
  #
147
150
  # ==== Parameters:
148
151
  #
@@ -151,7 +154,8 @@ module Fox
151
154
  def rotate(degrees) ; end
152
155
 
153
156
  #
154
- # Crop image to given rectangle; this calls resize() to adjust the client
157
+ # Crop image to given rectangle and then re-render the server-side image
158
+ # from the client-side pixel buffer. This method calls resize() to adjust the client
155
159
  # and server side representations. The new image may be smaller or larger
156
160
  # than the old one; blank areas are filled with color. There must be at
157
161
  # least one pixel of overlap between the old and the new image.
@@ -182,7 +186,8 @@ module Fox
182
186
  def fade(color, factor=255); end
183
187
 
184
188
  #
185
- # Shear image horizontally; the number of pixels is equal to the
189
+ # Shear image horizontally and then re-render the server-side image
190
+ # from the client-side pixel buffer. The number of pixels is equal to the
186
191
  # _shear_ parameter times 256. The area outside the image is filled
187
192
  # with transparent black, unless another _color_ is specified.
188
193
  #
@@ -194,7 +199,8 @@ module Fox
194
199
  def xshear(shear, color=0); end
195
200
 
196
201
  #
197
- # Shear image vertically; the number of pixels is equal to the
202
+ # Shear image verticallyand then re-render the server-side image
203
+ # from the client-side pixel buffer. The number of pixels is equal to the
198
204
  # _shear_ parameter times 256. The area outside the image is filled
199
205
  # with transparent black, unless another _color_ is specified.
200
206
  #
@@ -19,6 +19,7 @@ module Fox
19
19
  # +TOGGLEBUTTON_AUTOGRAY+:: Automatically gray out when not updated
20
20
  # +TOGGLEBUTTON_AUTOHIDE+:: Automatically hide toggle button when not updated
21
21
  # +TOGGLEBUTTON_TOOLBAR+:: Toolbar style toggle button [flat look]
22
+ # +TOGGLEBUTTON_KEEPSTATE+:: Draw button according to state
22
23
  # +TOGGLEBUTTON_NORMAL+:: <tt>FRAME_RAISED|FRAME_THICK|JUSTIFY_NORMAL|ICON_BEFORE_TEXT</tt>
23
24
  #
24
25
  class FXToggleButton < FXLabel
@@ -0,0 +1,166 @@
1
+ %!PS-Adobe-3.0
2
+ %%Title: Print Job
3
+ %%Creator: FOX GUI Toolkit Application
4
+ %%BoundingBox: 72 72 540 720
5
+ %%Pages: (atend)
6
+ %%DocumentFonts:
7
+ %%EndComments
8
+ %%BeginProlog
9
+
10
+
11
+ % h w x y drawRect
12
+ /drawRect {
13
+ newpath moveto dup 0 rlineto exch dup 0 exch
14
+ rlineto exch neg 0 rlineto neg 0 exch rlineto
15
+ closepath stroke
16
+ } def
17
+ % h w x y fillRect
18
+ /fillRect {
19
+ newpath moveto dup 0 rlineto exch dup 0 exch
20
+ rlineto exch neg 0 rlineto neg 0 exch rlineto
21
+ closepath fill stroke
22
+ } def
23
+ % x y a b drawLine
24
+ /drawLine {
25
+ newpath moveto lineto stroke
26
+ } def
27
+ % x y ..... npoints drawLines
28
+ /drawLines {
29
+ 3 1 roll newpath moveto {lineto} repeat stroke
30
+ } def
31
+ % x y a b ..... nsegments drawSegmt
32
+ /drawSegmt {
33
+ newpath {
34
+ moveto lineto
35
+ } repeat stroke
36
+ } def
37
+ % x y drawPoint
38
+ /drawPoint {
39
+ translate 1 1 scale 8 8 1 [ 8 0 0 8 0 0 ] {<0000>} image
40
+ } def
41
+ % centerx centery startAngle endAngle radiusX radiusY drawArc
42
+ /drawArc {
43
+ gsave dup 3 1 roll div dup 1 scale 6 -1 roll
44
+ exch div 5 1 roll 3 -2 roll arc stroke grestore
45
+ } def
46
+ % (string) x y height drawText
47
+ /drawText {
48
+ gsave findfont exch scalefont setfont moveto
49
+ show grestore
50
+ } def
51
+ /bwproc
52
+ { rgbproc
53
+ dup length 3 idiv string 0 3 0
54
+ 5 -1 roll
55
+ { add 2 1 roll 1 sub dup 0 eq
56
+ { pop 3 idiv 3 -1 roll dup 4 -1 roll dup
57
+ 3 1 roll 5 -1 roll put 1 add 3 0 }
58
+ { 2 1 roll } ifelse
59
+ } forall
60
+ pop pop pop
61
+ } def
62
+ systemdict /colorimage known not
63
+ { /colorimage
64
+ { pop pop /rgbproc exch def
65
+ { bwproc } image
66
+ } def
67
+ } if
68
+ % Color - r g b C
69
+ /C { setrgbcolor } bind def
70
+ % Point - x y r g b P
71
+ /P { C newpath 0.5 0.0 360.0 arc closepath fill } bind def
72
+ % Flat Shaded Line - x2 y2 x1 y1 r g b L
73
+ /L { C newpath moveto lineto stroke } bind def
74
+ % Smooth-shaded line - x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 SL
75
+ /SL {
76
+ /b1 exch def
77
+ /g1 exch def
78
+ /r1 exch def
79
+ /y1 exch def
80
+ /x1 exch def
81
+ /b2 exch def
82
+ /g2 exch def
83
+ /r2 exch def
84
+ /y2 exch def
85
+ /x2 exch def
86
+
87
+ b2 b1 sub abs 0.01 gt
88
+ g2 g1 sub abs 0.005 gt
89
+ r2 r1 sub abs 0.008 gt
90
+ or or {
91
+ /bm b1 b2 add 0.5 mul def
92
+ /gm g1 g2 add 0.5 mul def
93
+ /rm r1 r2 add 0.5 mul def
94
+ /ym y1 y2 add 0.5 mul def
95
+ /xm x1 x2 add 0.5 mul def
96
+
97
+ x1 y1 r1 g1 b1 xm ym rm gm bm SL
98
+ xm ym rm gm bm x2 y2 r2 g2 b2 SL
99
+ } {
100
+ x1 y1 x2 y2 r1 g1 b1 L
101
+ } ifelse
102
+ } bind def
103
+ % Flat-shaded triangle - x3 y3 x2 y2 x1 y1 r g b T
104
+ /T { C newpath moveto lineto lineto closepath fill } bind def
105
+ % Smooth-shaded triangle - x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 ST
106
+ /ST {
107
+ /b1 exch def
108
+ /g1 exch def
109
+ /r1 exch def
110
+ /y1 exch def
111
+ /x1 exch def
112
+ /b2 exch def
113
+ /g2 exch def
114
+ /r2 exch def
115
+ /y2 exch def
116
+ /x2 exch def
117
+ /b3 exch def
118
+ /g3 exch def
119
+ /r3 exch def
120
+ /y3 exch def
121
+ /x3 exch def
122
+
123
+ b2 b1 sub abs 0.05 gt
124
+ g2 g1 sub abs 0.017 gt
125
+ r2 r1 sub abs 0.032 gt
126
+ b3 b1 sub abs 0.05 gt
127
+ g3 g1 sub abs 0.017 gt
128
+ r3 r1 sub abs 0.032 gt
129
+ b2 b3 sub abs 0.05 gt
130
+ g2 g3 sub abs 0.017 gt
131
+ r2 r3 sub abs 0.032 gt
132
+ or or or or or or or or {
133
+ /b12 b1 b2 add 0.5 mul def
134
+ /g12 g1 g2 add 0.5 mul def
135
+ /r12 r1 r2 add 0.5 mul def
136
+ /y12 y1 y2 add 0.5 mul def
137
+ /x12 x1 x2 add 0.5 mul def
138
+
139
+ /b13 b1 b3 add 0.5 mul def
140
+ /g13 g1 g3 add 0.5 mul def
141
+ /r13 r1 r3 add 0.5 mul def
142
+ /y13 y1 y3 add 0.5 mul def
143
+ /x13 x1 x3 add 0.5 mul def
144
+
145
+ /b32 b3 b2 add 0.5 mul def
146
+ /g32 g3 g2 add 0.5 mul def
147
+ /r32 r3 r2 add 0.5 mul def
148
+ /y32 y3 y2 add 0.5 mul def
149
+ /x32 x3 x2 add 0.5 mul def
150
+
151
+ x1 y1 r1 g1 b1 x12 y12 r12 g12 b12 x13 y13 r13 g13 b13
152
+ x2 y2 r2 g2 b2 x12 y12 r12 g12 b12 x32 y32 r32 g32 b32
153
+ x3 y3 r3 g3 b3 x32 y32 r32 g32 b32 x13 y13 r13 g13 b13
154
+ x32 y32 r32 g32 b32 x12 y12 r12 g12 b12 x13 y13 r13 g13 b13
155
+ ST ST ST ST
156
+ } {
157
+ x1 y1 x2 y2 x3 y3 r1 g1 b1 T
158
+ } ifelse
159
+ } bind def
160
+ %%EndProlog
161
+ %%BeginSetup
162
+ /#copies 1 def
163
+ %%EndSetup
164
+ %%Trailer
165
+ %%Pages: 0
166
+ %%EOF