1 |
title: Skencil / Release Notes for the Development Version |
2 |
|
3 |
<p>All changes since version 0.7.5 are covered in detail in the ChangeLog |
4 |
files. Here you'll only find the most important changes.</p> |
5 |
<div class="section" id="sketch-0-7-12-february-7th-2003"> |
6 |
<h2><a name="sketch-0-7-12-february-7th-2003">Sketch 0.7.12 (February 7th, 2003)</a></h2> |
7 |
<blockquote> |
8 |
<ul class="simple"> |
9 |
<li>Translucency works for raster images with alpha channel. Most of the |
10 |
code for this came from a patch by David Boddie.</li> |
11 |
<li>Export filter for EPS files. You can now save drawings as EPS by |
12 |
saving to a file with a .eps extension.</li> |
13 |
<li>Updates to the CGM filters by Antoon Pardon. These updates are also |
14 |
in 0.6.15</li> |
15 |
</ul> |
16 |
</blockquote> |
17 |
<p>Bug Fixes:</p> |
18 |
<blockquote> |
19 |
<ul class="simple"> |
20 |
<li>The SVG import filter now handles the viewBox attribute of the svg |
21 |
element (it doesn't handle the preserveAspectRatio attribute though). |
22 |
The filter also makes sure that non-text object won't get a font |
23 |
attribute and it understands more color names. Bugs reported by Keith |
24 |
Hopper. These fixes are also in 0.6.15</li> |
25 |
<li>The CMX import filter handles poly-curves with a large number of |
26 |
points better now. Reported by Tim Wright. These fixes are also in |
27 |
0.6.15.</li> |
28 |
</ul> |
29 |
</blockquote> |
30 |
</div> |
31 |
<div class="section" id="sketch-0-7-11-september-14th-2002"> |
32 |
<h2><a name="sketch-0-7-11-september-14th-2002">Sketch 0.7.11 (September 14th, 2002)</a></h2> |
33 |
<blockquote> |
34 |
<ul class="simple"> |
35 |
<li>CGM import/export filters. Contributed by Antoon Pardon</li> |
36 |
</ul> |
37 |
</blockquote> |
38 |
<p>Bug fixes:</p> |
39 |
<blockquote> |
40 |
<ul class="simple"> |
41 |
<li>This release contains the missing the Plugins/Filters/Lib |
42 |
subdirectory.</li> |
43 |
<li>The SVG import filter now only accepts ASCII font names. Before |
44 |
unicode strings could end up in .sk files which Sketch couldn't read.</li> |
45 |
</ul> |
46 |
</blockquote> |
47 |
</div> |
48 |
<div class="section" id="sketch-0-7-10-august-2nd-2002"> |
49 |
<h2><a name="sketch-0-7-10-august-2nd-2002">Sketch 0.7.10 (August 2nd, 2002)</a></h2> |
50 |
<blockquote> |
51 |
<ul class="simple"> |
52 |
<li>New dialog with a color palette. Contributed by Mark Rose</li> |
53 |
<li>New dialog to edit object properties. Contributed by Mark Rose.</li> |
54 |
<li>Nodes inserted into bezier segments are now 'smooth' instead of |
55 |
'symmetric'. Reported by Antoon Pardon</li> |
56 |
<li>Files can now be saved in the older format used by Sketch 0.6 by |
57 |
using the extension ".sk1".</li> |
58 |
<li>Import filter for Acorn Drawfiles, the same as published with 0.6.13. |
59 |
Contributed by David Boddie.</li> |
60 |
<li>The wmf import filter supports a PolyPolylines now. Patch from Antoon |
61 |
Pardon.</li> |
62 |
<li>The SVG import filter parses paths more correctly now. The old |
63 |
version didn't accept numbers without delimiters in between, which is |
64 |
legal in an SVG path if the second number starts with a sign.</li> |
65 |
<li>The SVG export filter now escapes text properly. Bug reported by |
66 |
Stefan Eilers (SF #545267).</li> |
67 |
<li>The SVG export has some basic support for Text. Based on a Patch by |
68 |
Paul Giotta</li> |
69 |
<li>The Illustrator-import filter now gives a warning if the file looks |
70 |
as if it's not generated by AI. Furthermore it understands text |
71 |
alignment now.</li> |
72 |
</ul> |
73 |
</blockquote> |
74 |
<p>Internal Changes:</p> |
75 |
<blockquote> |
76 |
<ul class="simple"> |
77 |
<li>The load_immediately flag of plugins ported over from 0.6</li> |
78 |
<li>Plugins can now have plugin specific libraries. Also ported over from |
79 |
0.6.</li> |
80 |
</ul> |
81 |
</blockquote> |
82 |
<p>Bug fixes:</p> |
83 |
<blockquote> |
84 |
<ul class="simple"> |
85 |
<li>Quote filenames of EPS files properly when rendering the preview. The |
86 |
previous behavior was a security problem. This is the fix that was |
87 |
already part of Sketch 0.6.13.</li> |
88 |
<li>The extension modules in Sketch/Modules and Filter now use the Python |
89 |
Memory API correctly as specified for Python 1.5.2 but it should also |
90 |
be compatible with later versions including 2.3 (according to the |
91 |
discussion in April 2002)</li> |
92 |
</ul> |
93 |
</blockquote> |
94 |
</div> |
95 |
<div class="section" id="sketch-0-7-9-november-28th-2001"> |
96 |
<h2><a name="sketch-0-7-9-november-28th-2001">Sketch 0.7.9 (November 28th, 2001)</a></h2> |
97 |
<blockquote> |
98 |
<ul class="simple"> |
99 |
<li>Russian translation contributed by Andrey Kiselev</li> |
100 |
<li>When given a non-existing file on the command line, open a window for |
101 |
that file anyway instead of just giving error messages. Based on a |
102 |
patch by Han-Wen Nienhuys.</li> |
103 |
<li>Ungrouping works now. Based on a patch by Han-Wen Nienhuys.</li> |
104 |
<li>Support for Python 2.1</li> |
105 |
<li>The beginnings of a simple test suite in the test/ subdirectory</li> |
106 |
</ul> |
107 |
</blockquote> |
108 |
<p>Bug fixes:</p> |
109 |
<blockquote> |
110 |
<ul class="simple"> |
111 |
<li>setup.py uses libart-config instead of gnome-config to correctly |
112 |
support systems that have libart but not GNOME.</li> |
113 |
<li>Read AFM-files without per character bounding boxes correctly. Based |
114 |
on a patch by Han-Wen Nienhuys.</li> |
115 |
<li>Sketch still used an Xlib function directly to read XBM files. This |
116 |
is now fixed by reding them through PIL.</li> |
117 |
</ul> |
118 |
</blockquote> |
119 |
<p>Internal Changes:</p> |
120 |
<blockquote> |
121 |
<ul class="simple"> |
122 |
<li>remove some code in the insert/remove implementation that was still |
123 |
left over from the old representation of the selections.</li> |
124 |
</ul> |
125 |
</blockquote> |
126 |
</div> |
127 |
<div class="section" id="sketch-0-7-8-april-4th-2001"> |
128 |
<h2><a name="sketch-0-7-8-april-4th-2001">Sketch 0.7.8 (April 4th, 2001)</a></h2> |
129 |
<blockquote> |
130 |
<ul class="simple"> |
131 |
<li>Make bezier segments draggable. Ported from demo code by Simon Budig. |
132 |
This is the same code that's also in 0.6.8</li> |
133 |
<li>New menu "Xtns" in the tool box window.</li> |
134 |
<li>A new dialog reachable through the Xtns menu that displays error |
135 |
messages</li> |
136 |
<li>All graphics objects support meta data. There's also a dialog to add, |
137 |
edit and remove meta data in the Xtns menu.</li> |
138 |
<li>A PDF export filter. This is the same that's also in 0.6.9.</li> |
139 |
<li>New implementations of the impert and export filters for the |
140 |
sk-format. The format has also changed somewhat. The new format is |
141 |
the native format now. Sketch 0.6.8 can't read those files currently, |
142 |
but documents can be saved in the old format by saving them with the |
143 |
extensions .sk1.</li> |
144 |
<li>As part of the filter rewrite, the way plugin objects are saved has |
145 |
changed. The PluginObjects that come with Sketch have been updated |
146 |
accordingly.</li> |
147 |
</ul> |
148 |
</blockquote> |
149 |
<p>Bug fixes:</p> |
150 |
<blockquote> |
151 |
<ul class="simple"> |
152 |
<li>Some small fixes to make Sketch compile with Python 1.6/2.0. Based on |
153 |
a patch contributed by Thomas Gellekum.</li> |
154 |
<li>Push the gdkrgb visual and colormap once at the beginning in main |
155 |
before any widgets are created. This fixes one common cause of the |
156 |
segmentation faults many users experienced.</li> |
157 |
<li>Several small fixes in the SVG filters.</li> |
158 |
</ul> |
159 |
</blockquote> |
160 |
<p>Internal Changes:</p> |
161 |
<blockquote> |
162 |
<ul class="simple"> |
163 |
<li>The plugin management code is now in the new subpackage |
164 |
Sketch.Plugin. This package has its own config file |
165 |
~/.devsketch/plugin.prefs</li> |
166 |
<li>Tools are now identified by an object and not just by their name |
167 |
anymore. These objects are derived from the new class ToolInfo and |
168 |
have some attributes that describe the object including a method that |
169 |
instantiates the tool for a given document editor. The old tool |
170 |
classes like MouseTool and derived classes are the classes for these |
171 |
editor specific instances.</li> |
172 |
<li>The code for the old representation of the selection has been |
173 |
removed.</li> |
174 |
<li>Added ASCII85 filters to the streamfilter module (In the Filters/ |
175 |
subdirectory)</li> |
176 |
</ul> |
177 |
</blockquote> |
178 |
</div> |
179 |
<div class="section" id="sketch-0-7-7-june-24th-2000"> |
180 |
<h2><a name="sketch-0-7-7-june-24th-2000">Sketch 0.7.7 (June 24th, 2000)</a></h2> |
181 |
<blockquote> |
182 |
<ul> |
183 |
<li><p class="first">Added a button in the top-right corners of the editor windows that |
184 |
indicates whether the document in the window is the active document. |
185 |
Clicking on the button makes the document in the window the active |
186 |
document.</p> |
187 |
</li> |
188 |
<li><p class="first">A document can have multiple views and editors now. The menu item |
189 |
View->New View creates a new view but the same editor as the active |
190 |
window and View->New Editor creates a new view with a new editor.</p> |
191 |
<p>A document window always has one associated editor and an editor |
192 |
always has one associated document, but a document can have multiple |
193 |
editors and an editor can have multiple windows. Windows that share |
194 |
an editor (and hence also a document) always have the same selection, |
195 |
windows with different editors may have different selections even for |
196 |
the same document.</p> |
197 |
<p>The "New Editor" command is an advanced feature IMO in that the |
198 |
difference between "New View" and "New Editor" isn't all that obvious |
199 |
and I'm not sure whether the "New Editor" command is really useful. |
200 |
The current implementation has some limitations when the same bezier |
201 |
curve is selected in different editors in edit mode. The selected |
202 |
nodes will be the same in both editors. This feature is mostly a side |
203 |
effect of internal changes anyway. It may be that the "New Editor" |
204 |
command will not be included in 0.8, but the functionality is |
205 |
unlikely to be removed.</p> |
206 |
</li> |
207 |
<li><p class="first">A somewhat incomplete fill pattern dialog.</p> |
208 |
</li> |
209 |
<li><p class="first">The 'modified' label works now.</p> |
210 |
</li> |
211 |
</ul> |
212 |
</blockquote> |
213 |
<p>Internal Changes:</p> |
214 |
<blockquote> |
215 |
<ul> |
216 |
<li><p class="first">Sketch/Base is now a subpackage. All objects and modules that used to |
217 |
be directly available in the Sketch package and whose files were in |
218 |
Sketch/Base are now part of Sketch.Base. The Sketch.base_init |
219 |
function is now Sketch.Base.init</p> |
220 |
</li> |
221 |
<li><p class="first">All objects that are implemented in the Graphics subpackage are now |
222 |
exported directly by it and should be taken from there and not from |
223 |
the Sketch package. E.g. Use Sketch.Graphics.Rectangle instead of |
224 |
Sketch.Rectangle</p> |
225 |
</li> |
226 |
<li><p class="first">Pattern and gradient objects are now immutable. This change involves |
227 |
removing all of the methods that change a pattern/gradient in place |
228 |
and the addition of new methods that return changed copies of an |
229 |
object.</p> |
230 |
</li> |
231 |
<li><p class="first">A new class of document editor that manages the selection itself. In |
232 |
the old implementation the selection was managed by the document. The |
233 |
new approach makes more sense in my opinion and, together with a |
234 |
somewhat different representation of the set of selected objects, it |
235 |
offers some new features:</p> |
236 |
<blockquote> |
237 |
<ul class="simple"> |
238 |
<li>It will be possible to 'remember' selections. E.g. the user could |
239 |
name a particular set of selected objects and later. This isn't |
240 |
implemented yet.</li> |
241 |
<li>It's possible to have several views of one document with |
242 |
different selections.</li> |
243 |
</ul> |
244 |
</blockquote> |
245 |
</li> |
246 |
<li><p class="first">The document's TRANSACTION_END messages now have parameters.</p> |
247 |
</li> |
248 |
<li><p class="first">The representation of menus has changed. Normal menu items are only |
249 |
stored as command names now which are looked up in the command |
250 |
registry every time the command object has to be accessed. The title |
251 |
of the menu item is taken from the command object.</p> |
252 |
</li> |
253 |
</ul> |
254 |
</blockquote> |
255 |
</div> |
256 |
<div class="section" id="sketch-0-7-6-march-26th-2000"> |
257 |
<h2><a name="sketch-0-7-6-march-26th-2000">Sketch 0.7.6 (March 26th, 2000)</a></h2> |
258 |
<blockquote> |
259 |
<ul class="simple"> |
260 |
<li>Sketch is in GNOME CVS now. See README for access instructions</li> |
261 |
<li>The tree view is actually useful. It reflects the current selection |
262 |
and you can use it to select objects.</li> |
263 |
<li>8-Bit PseudoColor visuals are supported again. The implementation is |
264 |
not very good at the moment, though. The anti-aliased rendering mode |
265 |
should be fine and you'll even get error diffusion dithering thanks |
266 |
to GdkRGB, but the colors in the non-anti-aliased mode may be a |
267 |
little off.</li> |
268 |
<li>User preferences are no longer saved in ~/.devsketch/preferences.py |
269 |
but in four different files in the same directory: base.prefs, |
270 |
graphics.prefs, editor.prefs and ui.prefs. See below for more detail.</li> |
271 |
<li>Various enhancements for the anti-aliased mode including outlined |
272 |
drawing of individual layers and the whole document as already |
273 |
possible in non-anti-aliased mode.</li> |
274 |
</ul> |
275 |
</blockquote> |
276 |
<p>Internal Changes:</p> |
277 |
<blockquote> |
278 |
<ul> |
279 |
<li><p class="first">Added a number of new message channels to the document object which |
280 |
are also forwarded by the context object.</p> |
281 |
<p>TRANSACTION_START and TRANSACTION_END are issued at the start and end |
282 |
of each transaction. OBJECT_CHANGED is issued whenever an object |
283 |
changes. The message parameters describe which object changed and |
284 |
what changed, i.e. whether its geometry or properties changed among |
285 |
others.</p> |
286 |
</li> |
287 |
<li><p class="first">The graphics objects aren't message publishers anymore. They only |
288 |
report changes to their parents and to the document object they |
289 |
belong to. To be notified of a change in an object, subscribe to the |
290 |
document's or the context's OBJECT_CHANGED channel</p> |
291 |
</li> |
292 |
<li><p class="first">The way the redraw region is determined has changed completely. |
293 |
Before, it was basically the bounding rectangle of the current |
294 |
selection and if necessary a few additional rectangles. Now, this is |
295 |
automatically handled by the object's _changed() methods.</p> |
296 |
</li> |
297 |
<li><p class="first">Changed the way user preferences are handled. Instead of only one |
298 |
preference object in Sketch.config there are now several objects |
299 |
which are also saved in different files in ~/.devsketch: |
300 |
Sketch.config.preference for basic configuration (saved in |
301 |
base.prefs), Sketch.UI.preferences for GUI prefs (ui.prefs), |
302 |
Sketch.Editor.preferences for GUI independent editor preferences |
303 |
(editor.prefs) and Sketch.Graphics.preferences (graphics.prefs).</p> |
304 |
</li> |
305 |
<li><p class="first">The main entry point for Sketch as a GUI program is now |
306 |
Sketch.UI.main. Sketch/Base/main.py has been removed.</p> |
307 |
</li> |
308 |
</ul> |
309 |
</blockquote> |
310 |
</div> |
311 |
<div class="section" id="sketch-0-7-5-january-23rd-2000"> |
312 |
<h2><a name="sketch-0-7-5-january-23rd-2000">Sketch 0.7.5 (January 23rd, 2000)</a></h2> |
313 |
<blockquote> |
314 |
<ul class="simple"> |
315 |
<li>The libart renderer now supports dashes, arrows and tiled image |
316 |
fills.</li> |
317 |
<li>"Snap To Objects" now also works for raster images and eps files. |
318 |
They can even be used as guides by moving them onto the guide layer. |
319 |
They behave just like rectangles in this regard.</li> |
320 |
<li>bzip2 compressed sk-files (and also ai and svg) can now be |
321 |
uncompressed transparently if bzip2 is installed. The same |
322 |
functionality for gzip was already present in 0.5.0.</li> |
323 |
<li>More accurate papersizes for the A<n> formats, contributed by Martin |
324 |
Glaser. The sizes used to be derived from first principles, so to |
325 |
speak, everytime, but that does not yield exactly the same values |
326 |
that the standard defines. The old code is still there in |
327 |
Sketch/Graphics/papersize.py, if you're curious.</li> |
328 |
<li>The DSC parser, used for e.g. extracting the bounding box of EPS |
329 |
files, can cope with non-Unix line separator conventions.</li> |
330 |
<li>Fixed a bug in the code that draws axial (linear) gradients on the |
331 |
screen, postscript output was not affected. In some cases the |
332 |
direction of diagonal the gradients was incorrect, most noticable for |
333 |
very large border values.</li> |
334 |
<li>The way paper formats are stored in the sk-files has changed |
335 |
slightly. Only formats of a fixed list are stored by name now, for |
336 |
all others, only the dimensions are saved. This was done to prevent |
337 |
problems if users add new formats in their userhooks.py.</li> |
338 |
<li>The files ARROWS and NOTES are now in a subdirectory Doc with |
339 |
lowercase filenames</li> |
340 |
<li>A new file Doc/styles that describes the ideas behind the dynamic |
341 |
styles currently implemented in Sketch</li> |
342 |
<li>The --imaging-include option of setup.py should work properly with |
343 |
relative filenames now.</li> |
344 |
</ul> |
345 |
</blockquote> |
346 |
</div> |
347 |
<div class="section" id="sketch-0-7-4-december-23rd-1999"> |
348 |
<h2><a name="sketch-0-7-4-december-23rd-1999">Sketch 0.7.4 (December 23rd, 1999)</a></h2> |
349 |
<blockquote> |
350 |
<ul> |
351 |
<li><p class="first">Sketch can use libart for anti-aliased rendering now. The |
352 |
libart-drawing code is not complete yet, though. For instance, arrow |
353 |
heads, dashes and tiled images as fill patterns are not yet |
354 |
implemented. By default sketch still uses the gdk-based drawing |
355 |
routines but you can swith to antialiased mode with the "Antialiased" |
356 |
command in the "View" menu.</p> |
357 |
<p>libart is the rendering library of the GNOME canvas. If you have |
358 |
gnome installed, the setup script should be able to find libart |
359 |
automatically. If the script can't find libart, anti-aliased |
360 |
rendering will not be available.</p> |
361 |
<p>Sketch only uses libart itself at the moment and it is possible to |
362 |
install libart without the rest of GNOME as it is completely |
363 |
independent. If you have installed libart without GNOME, you might |
364 |
have to use the --libart-cflags and --libart-libs options of setup.py |
365 |
to point it at your libart installation. E.g. if libart is installed |
366 |
under /usr/local you could use:</p> |
367 |
<blockquote> |
368 |
<dl class="docutils"> |
369 |
<dt>./setup.py configure --libart-cflags=-I/usr/local/include </dt> |
370 |
<dd><p class="first last">--libart-libs=-I/usr/local/lib -lart_lgpl</p> |
371 |
</dd> |
372 |
</dl> |
373 |
</blockquote> |
374 |
</li> |
375 |
<li><p class="first">Experimental changes to the arrow head code to make the tips of the |
376 |
arrows `snappable'. See the file ARROWS for a more detailed |
377 |
discussion. The two solutions described there are available in a new |
378 |
"Devel" menu for commands only needed for development purposes. Both |
379 |
commands assing two arrow heads and a line_width of 4 to the selected |
380 |
object. Both solutions are only implemented in the editor and the |
381 |
screen display code, you can't print or save them.</p> |
382 |
</li> |
383 |
<li><p class="first">Started to work on a property/style dialog, available in the "Devel" |
384 |
menu. It's very primitive and you can't change anything yet, but it |
385 |
allows yu to see the information Sketch actually stores with each |
386 |
object. This is especially interesting if you have a drawing with |
387 |
styles.</p> |
388 |
</li> |
389 |
<li><p class="first">Moved more of the curve fitting code for the freehand tool to C to |
390 |
make it faster.</p> |
391 |
</li> |
392 |
<li><p class="first">Added some experimental Drag and Drop code to the toolbox. It should |
393 |
be possible to drop files from gmc on the toolbox to make Sketch open |
394 |
them.</p> |
395 |
</li> |
396 |
<li><p class="first">When editing bezier curves, the ctrl-key now restricts the movement |
397 |
of nodes to horizontal and vertical and when dragging a control |
398 |
point, the angle of the tangent is restricted to multiples of 15 |
399 |
degrees.</p> |
400 |
</li> |
401 |
<li><p class="first">When drawing bezier curves the ctrl-key now restricts the slope of |
402 |
the tangent to multiples of 15 degrees.</p> |
403 |
</li> |
404 |
<li><p class="first">When drawing poly-lines, the ctrl-key now restricts the slopes of the |
405 |
lines to multiples of 15 degrees.</p> |
406 |
</li> |
407 |
<li><p class="first">Selecting a blend group works a little different now, so that |
408 |
clicking on the interpolation selects the entire blend group. In |
409 |
earlier versions only the interpolation object was selected in that |
410 |
case. Clicking on a control object of a blend group still selects |
411 |
just the control object. (The blend group object contains both the |
412 |
control objects and the interpolation objects).</p> |
413 |
<p>The reason for this change is that it makes it easier to select two |
414 |
blend groups to create an interpolation betweem them.</p> |
415 |
</li> |
416 |
<li><p class="first">There a new option for ~/.sketch/preferences.py, fallback_font. This |
417 |
is the name of the font to use when a font or the corresponding |
418 |
metrics can't be found. The default is 'Times-Roman'</p> |
419 |
</li> |
420 |
<li><p class="first">Fixed a bug in Sketch's postscript procset |
421 |
(Resources/Misc/sketch-proc.ps) that caused problems when a |
422 |
sketch-eps that contains eps's that use showpage was embedded in a ps |
423 |
file which was then run through psnup (got that? :) ) To reproduce |
424 |
it, create an eps with dvips, embed it in a Sketch drawing export as |
425 |
eps, embed it in a tex-document, create a psfile from that with dvips |
426 |
and 'psnup -2' it. The resulting psfile executes a superfluous |
427 |
showpage at the end of the embedded tex-eps.</p> |
428 |
</li> |
429 |
<li><p class="first">Blending of two path-text objects works now. In previous versions |
430 |
attempting this would leave the document in an inconsistent state and |
431 |
the user could neither undo the operation or even save properly.</p> |
432 |
</li> |
433 |
<li><p class="first">Fixed bugs in the type1 font file parser and the underlying |
434 |
postscript tokenizer. Some type 1 font files caused segfaults in the |
435 |
tokenizer (e.g. the UTB_____.pfa font that comes with X11).</p> |
436 |
</li> |
437 |
</ul> |
438 |
</blockquote> |
439 |
<p>Internal Changes:</p> |
440 |
<blockquote> |
441 |
<ul> |
442 |
<li><p class="first">Switched _skgtkmodule from using _gtk's _private dictionary to access |
443 |
_gtk at C level to using init_pygtk().</p> |
444 |
</li> |
445 |
<li><p class="first">In gtkdevice.py, distinguish between the associated window |
446 |
(self.window) and the current drawable (new instance var |
447 |
self.drawable) to facilitate switching to a pixmap temporarily. All |
448 |
drawing takes place on self.drawable.</p> |
449 |
</li> |
450 |
<li><p class="first">Introduced a new class PatternDevice between SimpleGC and |
451 |
GraphicsDevice in gtkdevice.py. PatternDevice knows how to draw |
452 |
gradient and other special fills and is used by the new properties |
453 |
dialog to draw the preview pixmaps.</p> |
454 |
</li> |
455 |
<li><p class="first">Introduced a new class SketchDrawingArea which is basically a clone |
456 |
of pygtk's GtkDrawingArea class, but has some Sketch specific |
457 |
features.</p> |
458 |
</li> |
459 |
<li><p class="first">Changed the way redraw region is handled inside the document object. |
460 |
In the old scheme, only the area covered by the selected objects |
461 |
before and after the transaction were automatically redrawn and some |
462 |
objects (the blend group) and operations (update style) had to add |
463 |
rectangles to this region themselves to make sure everything is |
464 |
redrawn properly. Undo/Redo were also treated specially.</p> |
465 |
<p>In the new scheme, the object's _changed() method adds self to the |
466 |
list of changed objects if self is part of a document by calling the |
467 |
documens object_changed() method. This covers all special cases |
468 |
listed above and is also much better for user scripts as they might |
469 |
modify arbitrary objects and not just the selected ones.</p> |
470 |
</li> |
471 |
</ul> |
472 |
</blockquote> |
473 |
</div> |
474 |
<div class="section" id="sketch-0-7-3-october-17th-1999"> |
475 |
<h2><a name="sketch-0-7-3-october-17th-1999">Sketch 0.7.3 (October 17th, 1999)</a></h2> |
476 |
<blockquote> |
477 |
<ul> |
478 |
<li><p class="first">A freehand tool. The implementation of the curve fitting is a bit |
479 |
slow at the moment, because much of the computation is done in |
480 |
Python. Moving more parts to C should improve performance |
481 |
substantially.</p> |
482 |
<p>The freehand tool has an accuracy option, which you can set by double |
483 |
clicking on the tool's button. The accuracy determines how close the |
484 |
fitted bezier curves match the sampled mouse positions, it's |
485 |
basically the maximum deviation in pixels.</p> |
486 |
<p>The algorithm, which is basically the same as found in gimp or |
487 |
autotrace, also needs some more fine tuning</p> |
488 |
</li> |
489 |
<li><p class="first">A most recently used file list in the file menu</p> |
490 |
</li> |
491 |
<li><p class="first">"Save" and "Save As" commands</p> |
492 |
</li> |
493 |
<li><p class="first">Updated svg import filter. It's the same as in 0.6.2 now.</p> |
494 |
</li> |
495 |
<li><p class="first">fixed a bug that caused the first few characters of a path-text to be |
496 |
misplaced if the start position coincided with a node (but not the |
497 |
start-node) of the curve-object.</p> |
498 |
</li> |
499 |
<li><p class="first">The afm-file parser is more tolerant now. It had problems with empty |
500 |
lines.</p> |
501 |
</li> |
502 |
<li><p class="first">The mkfontdb.py script knows a few more foundries and has a new |
503 |
commandline option '-f' to specify the foundry used when it can't be |
504 |
determined from the afm-file. I also increased its version to 1.2.</p> |
505 |
</li> |
506 |
<li><p class="first">setup.py's build command accepts arguments of the form <KEY>=<VALUE> |
507 |
now. These are passed through to make to let you override variables |
508 |
like CC or OPT. See the generated Makefiles or Makefile.pre.in for |
509 |
more details.</p> |
510 |
</li> |
511 |
</ul> |
512 |
</blockquote> |
513 |
<p>Internal Changes:</p> |
514 |
<blockquote> |
515 |
<ul class="simple"> |
516 |
<li>I've begun to split the document class in Sketch/Graphics/document.py |
517 |
into a base class for all Sketch documents and, derived from that, an |
518 |
InteractiveDocument class that contains code only needed for an |
519 |
interative editor. InteractiveDocument is defined in |
520 |
Sketch/Editor/document.py</li> |
521 |
</ul> |
522 |
</blockquote> |
523 |
</div> |
524 |
<div class="section" id="sketch-0-7-2-september-7th-1999"> |
525 |
<h2><a name="sketch-0-7-2-september-7th-1999">Sketch 0.7.2 (September 7th, 1999)</a></h2> |
526 |
<blockquote> |
527 |
<ul> |
528 |
<li><p class="first">If your Python is thread enabled, you should upgrade to GTK 1.2.4.</p> |
529 |
<p>With a thread-enabled Python, Sketch will hang in some situations |
530 |
with GTK 1.2.3 and earlier. The reason for this is a |
531 |
threading-related bug in GTK which was fixed in 1.2.4.</p> |
532 |
<p>Sketch 0.7.1 contained a workaround for this bug, but I took it out |
533 |
because it caused Sketch to hang with the fixed GTK. You can reenable |
534 |
this workaround by uncommenting the lines marked THREADBUG in |
535 |
Sketch/UI/canvas.py</p> |
536 |
</li> |
537 |
<li><p class="first">Import/Export filters for the SVG format. They also work with the |
538 |
current stable release (0.6.1); just copy them to the Plugins/Filters |
539 |
subdirectory of your Sketch installation.</p> |
540 |
<p>Both filters are very incomplete and experimental. I don't know how |
541 |
much time I will have to improve them because at the moment working |
542 |
on the core parts of Sketch is more important, so I'd appreciate it |
543 |
if somebody could take over development of these plugins.</p> |
544 |
<p>SVG is likely to become a very important file format for vector |
545 |
graphics. I think the ability to read and write SVG files will become |
546 |
a crucial feature for Sketch to have.</p> |
547 |
<p>The import filter requires the python xml package. See the INSTALL |
548 |
file for details on where to get it.</p> |
549 |
</li> |
550 |
</ul> |
551 |
</blockquote> |
552 |
<p>User Interface:</p> |
553 |
<blockquote> |
554 |
<ul> |
555 |
<li><p class="first">The edit tool can edit several objects at the same time now. This is |
556 |
especially useful when editing bezier curves. This feature is quite |
557 |
experimental at the moment and may not work as expected in some |
558 |
cases.</p> |
559 |
</li> |
560 |
<li><p class="first">The (UI of the) text tool is more sophisticated.</p> |
561 |
<ul class="simple"> |
562 |
<li>If you click on an existing text object, it is selected and you can |
563 |
edit the text. The caret is positioned where you clicked.</li> |
564 |
<li>If you click on a curve-like object, i.e. a bezier curve, a |
565 |
rectangle or an ellipse, a path text object is created an you can |
566 |
start editing the text.</li> |
567 |
<li>If you click somewhere else, a normal text object is created and |
568 |
you can start editing it. If you click and drag, you create a |
569 |
rotated text object (This already worked in the stable releases).</li> |
570 |
</ul> |
571 |
<p>The mouse cursor changes to indicate which of these things will |
572 |
happen.</p> |
573 |
</li> |
574 |
</ul> |
575 |
</blockquote> |
576 |
<p>Internal Changes:</p> |
577 |
<blockquote> |
578 |
<ul class="simple"> |
579 |
<li>The code reorganisation is practically complete.</li> |
580 |
</ul> |
581 |
</blockquote> |
582 |
</div> |
583 |
<div class="section" id="sketch-0-7-1-july-16th-1999"> |
584 |
<h2><a name="sketch-0-7-1-july-16th-1999">Sketch 0.7.1 (July 16th, 1999)</a></h2> |
585 |
<blockquote> |
586 |
<ul class="simple"> |
587 |
<li>The rewrite of the scripting/command infrastructure continued and |
588 |
supports keystrokes and toggle menu entries now</li> |
589 |
<li>Snapping has been added to the UI</li> |
590 |
<li>I've begun to implement a tree view of the object hierarchy, but you |
591 |
can't do anything yet. This will replace the layer dialog and allow |
592 |
the user to rearrange the stacking order of objects more easily.</li> |
593 |
<li>There's a simplistic text-tool now.</li> |
594 |
</ul> |
595 |
</blockquote> |
596 |
<p>Internal Changes:</p> |
597 |
<blockquote> |
598 |
<ul class="simple"> |
599 |
<li>Most of the code reorganization is complete. In particular, the |
600 |
python-level gtk-specific code is in Sketch.UI and the C-level |
601 |
gtk-specific code is in a separate module, _skgtk.so.</li> |
602 |
</ul> |
603 |
</blockquote> |
604 |
</div> |
605 |
<div class="section" id="sketch-0-7-0-june-18th-1999"> |
606 |
<h2><a name="sketch-0-7-0-june-18th-1999">Sketch 0.7.0 (June 18th, 1999)</a></h2> |
607 |
<blockquote> |
608 |
<ul class="simple"> |
609 |
<li>Sketch uses GTK instead of Tcl/Tk now.</li> |
610 |
<li>The directory for user specific configuration files is ~/.devsketch |
611 |
to avoid conflicts with a stable Sketch version.</li> |
612 |
</ul> |
613 |
</blockquote> |
614 |
</div> |