1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473
|
2005-02-14 Bernhard Herzog <bh@intevation.de>
* Filters/svgloader.py (rx_trafo): Modify the regular expression
to be more efficient, especially in cases where the trailing
closing parenthesis is missing.
2005-02-01 Bernhard Herzog <bh@intevation.de>
* Filters/svgloader.py (SVGLoader.Load): The additional code that
tries to set up the xml parser not to fetch DTDs doesn't work
properly with the ancient API we're using in the 0.6 branch and
apparently it isn't necessary there anyway. So remove it again.
2005-01-22 Bernhard Herzog <bh@intevation.de>
* Filters/svgloader.py: Some backports from HEAD:
(SVGHandler.parse_path): also accept
capital Z as closepath command as required by the SVG
specification. Savannah Patch #3587 by Bernhard Reiter.
(SVGLoader.Load): Make sure not to download DTDs etc.
2004-05-29 Bernhard Herzog <bh@intevation.de>
* Filters/svgsaver.py (SVGSaver.make_style): Set the fill-rule to
even-odd for filled shapes. Patch by Philippe Blayo. Backport
from HEAD
2003-11-30 Bernhard Herzog <bh@intevation.de>
* Objects/Lib/multilinetext/TextEditor.py (TextEditor.SizeSort)
(font_families.xlfd, font_families.ps),
* Objects/multilinetext.py (MultilineText.recompute): Handle more
variations on bold and/or italic.
Patch by Antoon Pardon
2003-11-29 Bernhard Herzog <bh@intevation.de>
* Objects/regpoly.py (RegularPolygon.recompute): The range builtin
complains about float arguments in Pythion 2.3 so make sure we
give it an int.
2003-11-29 Bernhard Herzog <bh@intevation.de>
* Filters/sksaver.py (tk_file_type),
* Filters/skloader.py (tk_file_type, SKLoader.__init__),
* Filters/cgmsaver.py (CGMSaver.SaveDocument),
* Filters/aisaver.py (AISaver.write_header):
Some sketch->skencil fixes for the plugins
2003-11-29 Bernhard Herzog <bh@intevation.de>
Patches by Lukasz Pankowski (slightly modified by me):
* Filters/cgmsaver.py (CGMSaver.PathText): Write a PathText
object.
(CGMSaver.SaveObjects): Recognize PathText objects properly.
* Filters/wmfsaver.py (WMFSaver.PathText): Write a PathText
object.
(WMFSaver.SaveObjects): Recognize PathText objects properly.
2003-06-09 Bernhard Herzog <bh@intevation.de>
* Filters/wmfsaver.py: New. WMF export filter by Lukasz Pankowski.
I modified it a little: Now all lines are shorter than 79 chars,
only spaces are used for indentation, some unused imports are
removed and the license statement is clarified to say LGPL
consitently (an error which was copied over from the cgm filters)
2003-05-17 Bernhard Herzog <bh@intevation.de>
* Filters/cgmloader.py, Filters/cgmsaver.py: Update the license
statement so that it says LGPL consistently
2003-04-19 Bernhard Herzog <bh@intevation.de>
* Filters/svgsaver.py (SVGSaver.make_style): Add omit_stroke
parameter so that the stroke properties can be explicitly omitted.
(SVGSaver.SimpleText): Use the new parameter to make_style to omit
the stroke properties for text. Otherwise it can happen that the
SVG file will not be drawn the same way as the original Sketch
document.
* Filters/svgloader.py (SVGHandler.__init__): Make initial fill
color black.
2003-03-01 Bernhard Herzog <bh@intevation.de>
* Filters/cgmsaver.py: Updates from Antoon Pardon to make the CGM
export filter more robust. If the drawing contains features
unsupported by the filter it produces warning messages.
2003-01-11 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (namedcolors): Update to the complete color
list of the SVG 1.0 specification
(SVGHandler.initsvg): Handle the viewBox attribute.
(SVGHandler.try_add_style): Pretend to apply the transformation
matrix to the stroke-width. See the comment.
(SVGHandler.set_loader_style): New method to set the loader's
graphics properties for the new object. One purpose of this method
is to strip the font for objects that can't have fonts.
(SVGHandler.circle, SVGHandler.ellipse, SVGHandler.rect)
(SVGHandler.polyline, SVGHandler.polygon, SVGHandler.begin_path)
(SVGHandler.image, SVGHandler.begin_text): Use the new method to
set the style.
* Filters/cgmsaver.py: Updates from Antoon Pardon: Rewrote the
Polybezier method and implemented rectangles and ellipses
* Filters/cgmloader.py: Updates from Antoon Pardon: Added code for
searching fonts. Unfortunately loading a CGM file with a fontlist
now takes considerably longer.
* Filters/cmxloader.py (CMXInterpreter.get_uint16): New. Read
usigned 16 bit int.
(CMXInterpreter.get_tag): The size is an unsigned 16 bit int.
(CMXInterpreter32.PolyCurve): Handle the tags 'manually' because
their sizes can't be trusted for very long curves. See comments.
2002-08-31 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/cgmsaver.py, Filters/cgmloader.py: New. Antoon Pardon's
CGM filters
* Filters/svgloader.py (SVGHandler.try_add_style): Convert font
names to 8bit strings.
2002-07-13 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/pdfgensaver.py: Convert tabs to spaces.
(PDFGenSaver.__init__): Recognize the pdgen_canvas option to allow
python code to render a document on an existing pdf canvas.
(PDFGenSaver.close): If the canvas came from the new pdgen_canvas
option do nothing here.
2002-05-13 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgsaver.py, Filters/svgloader.py,
Filters/pdfgensaver.py: Correct the license statement to LGPL. It
should have been LGPL all along, just like the rest of Sketch.
2002-04-18 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgsaver.py (escape): Function to xml-escape text
(SVGSaver.SimpleText): Escape the actual text properly
* Filters/bziploader.py (BZIP2Loader.Load):
* Filters/gziploader.py (GZIPLoader.Load): Quote the filename
properly
2002-02-22 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/wmfloader.py (WMFLoader.PolyPolygon): Implement the
PolyPolygon WMF function.
Patch by Antoon Pardon.
2002-02-20 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (SVGHandler.parse_style): Ignore styles
with empty values.
(SVGHandler.parse_path): Use skread.tokenize_line to parse the
arguments of a command, so that we deal with a negative number
immediately following another number properly.
2002-02-19 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/ailoader.py: Add support for text alignment.
(AILoader.__init__): New ivar text_align
(AILoader.end_text): Handle text alignment. Add a few comments.
(AILoader.set_text_align): Handle the Ta operator
* Filters/ailoader.py: Revert the check for EPSF in the header
because not all illustrator files have it.
2002-02-18 Bernhard Herzog <bernhard@users.sourceforge.net>
Patch by David Boddie:
* Filters/drawinput.py (DrawfileLoader.read_objects): Changed the
transformation matrix encoding for sprites so that the
off-diagonal elements should now be scaled appropriately according
to the horizontal and vertical dots per inch of the sprite.
* Filters/Lib/drawfile.py (sprite.input): Fix comment
* Filters/Lib/spritefile.py (spritefile.read_details): Modified
the maximum number of dots per inch for sprites with a mode
number.
2002-02-02 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgsaver.py (SVGSaver.Save): Set encoding to ISO-8859-1
* Filters/svgsaver.py (SVGSaver.make_style): First stab at dashes,
arrow heads and fonts. It generates only predefined dashes and
arrows, for now, and probably doesn't do the right thing with
fonts.
(SVGSaver.Save): Write some simple arrow heads. A real solution
should write out the arrow heads actually used in the drawing.
(SVGSaver.SimpleText): New method to implement text.
(SVGSaver.save_objects): Handle text objects.
These changes are based on a patch by Paul Giotta.
* Filters/svgloader.py (SVGHandler.parse_style,
SVGHandler.try_add_style): Split the actual parsing of the
individual style attributes from parse_style into the new method
try_add_style so that it can be used for presentation attributes.
Patch by Paul Giotta.
(SVGHandler.begin_text): Use the new try_add_style to parse the
presentation attributes.
Patch by Paul Giotta.
2002-01-30 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/Lib/spritefile.py, Filters/Lib/drawfile.py: Updates from
David Boddie.
* Filters/drawinput.py (RISCOSFont): Bug fix from David Boddie.
2002-01-24 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/aisaver.py (AISaver.write_header): Add EPSF to the
output header so that Sketch recognizes the ai files it writes.
2001-12-04 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/Lib/spritefile.py: Updates from David Boddie
2001-11-26 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/drawinput.py:
* Filters/Lib/spritefile.py:
* Filters/Lib/drawfile.py:
New files implementing an import for Acorn Drawfiles. Contributed
by David Boddie.
* Objects/multilinetext.py:
* Objects/Lib/multilinetext/styletext.py:
* Objects/Lib/multilinetext/iterator.py:
* Objects/Lib/multilinetext/chunker.py:
* Objects/Lib/multilinetext/__init__.py:
* Objects/Lib/multilinetext/TextEditor.py:
New files implementing the multiline text object contributed by
Chritof Ecker
* Filters/ailoader.py: Include the "EPSF" because Illustrator
files are always EPS files.
(AILoader.read_prolog): Issue a warning if it doesn't look like an
Illustrator file. Ideally, the AI-filter shouldn't even attempt to
parse EPS-files that aren't illustrator files but warning about it
is better than silently reading the file and creating a more or
less empty document.
2001-08-11 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (SVGHandler.parse_style): Parse font sizes
more correctly
(csscolor): Parse single digit hexadecimal RGB values correctly
2001-06-27 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/cmxloader.py (CMXInterpreter.get_tag,
CMXInterpreter.Run): Add some debug output
(CMXInterpreter.EndGroup): Ignore empty groups
(CMXInterpreter32.BeginGroup): Fix read_struct typestring to match
the CMX docs and the 16 bit version.
(CMXLoader.Load): Print tracebacks for unhandled exceptions.
2001-05-17 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (SVGHandler._print): Disable print again.
* Filters/pdfgensaver.py (PDFGenSaver.polybezier): Set the fill
color to the line color before drawing the arrows to make sure
that filled arrows are filled with the proper color.
2001-05-03 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (SVGHandler.initsvg): The width and height
attrs are optional in CR-SVG-20001102
(SVGHandler.user_point):
(SVGHandler.point): Split the point method into user_point which
computes the point in user coordinates and point which computes
the absolute coordinates as before.
(SVGHandler.image): Use user_point and fix the positioning of the
images.
(SVGHandler.begin_text): use user_point
(length):
(SVGHandler.user_length): Turn the length function into a method
because the return value may depend on SVGHandler's instance data.
Change the callers accordingly.
* Filters/svgloader.py (as_latin1): New function to convert
Unicode text to 8bit iso-latin-1 text when sketch runs under
Python 2.0 or 2.1
(SVGHandler.parse_transform):
(SVGHandler.polyline):
(SVGHandler.polygon):
(SVGHandler.parse_path): Make sure to convert strings to
iso-latin-1 before parsing them further.
(SVGHandler.begin_path): Handle the id attribute
(SVGHandler.point): Handle units as in CR-SVG-20001102, not as in
earlier drafts.
(SVGHandler.dispatch_start):
(SVGHandler.dispatch_end):
(SVGHandler.__init__):
(SVGHandler.characters):
(SVGHandler.parse_style):
(SVGHandler.image):
(SVGHandler.begin_text):
(SVGHandler.end_text):
Add support for text and images
(SVGLoader.__init__): Remember the directory of the file being
opened to be able to handle relative filenames later
2001-03-29 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgsaver.py (SVGSaver.write_gradient): Insert a missing
space in the radial gradient format string and add
gradientUnits="userSpaceOnUse" to radial and axial gradients.
Pointed out by Laetitia MARIN
2001-02-18 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/pdfgensaver.py (PDFGenSaver.polybezier): Draw the
arrowheads only when the polybezier object actually has line
properties.
* Filters/svgloader.py (SVGHandler.point): Handle %-coordinates
better. Patch provided by Philipp Matthias Hahn
2000-10-21 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/xfigloader.py (XFigLoader.line):
(XFigLoader.read_arc):
(XFigLoader.read_ellipse):
(XFigLoader.read_polyline):
(XFigLoader.read_spline): Add support for dash patterns
2000-09-24 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/pdfgensaver.py (PDFGenSaver.set_properties):
(PDFDevice.SetLineAttributes): Multiply the dashes with the line
width
(PDFGenSaver.draw_arrow): New method to draw an arrow head
(PDFGenSaver.polybezier): Draw arrow heads if present
2000-08-04 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/pdfgensaver.py (PDFGenSaver.polybezier): For an active
fill (i.e. gradients etc), make sure to restore the the state
before stroking the path. Otherwise half of it gets clipped.
2000-08-01 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgsaver.py: Add support for gradients.
2000-07-27 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/pdfgensaver.py: New export filter for PDF. Uses
reportlab's pdfgen as the backend, therefore reportlab
<htt://www.reportlab.com/> must be installed to use this filter.
2000-04-08 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/ailoader.py (AILoader.end_gradient): Clear the stack at
the end instead of just pop_to_mark. The second mark may not
always be present. (AFAICT it's only present if the ai file
contains printing information (i.e. final form)).
2000-03-24 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/svgloader.py (SVGHandler.parse_style): deal with empty
strings left in the list created by splitting on ';'
2000-03-19 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/xfigloader.py (XFigLoader.read_text): Use a globals
dictionary with an empty __builtins__ (i.e. use restricted
execution) when eval()ing strings.
2000-03-18 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/skloader.py (SKLoader.__init__): Fixed a typo in the
warning message for files of newer Sketch versions
2000-03-06 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/cmxloader.py: removed some unused imports
2000-02-29 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/cmxloader.py (CMXFile.read_procindex): In preparation
for Python 1.6, call list append methods with exactly one
argument.
2000-02-25 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/ailoader.py (AILoader.begin_ai_layer): In Illustrator 8,
the Lb operator takes more arguments. Treat this case properly.
(AILoader.read_prolog): Recognize the AI5_FileFormat comment and
set self.format_version accordingly
(AILoader.Load): Recognize and ignore the BrushPattern definitions
in AI8 files. Otherwise the filter treats them like normal objects
2000-02-24 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/ailoader.py (AILoader.__init__): New instance variable
format_version that holds the value of the AI5_FileFormat comment.
It defaults to 0.0
(AILoader.dummy_gradient_stop): New method to deal with the
additional color stop operator BS introduced in Illustrator 8
(AILoader.end_gradient): Now that the Br operator is recognized
pop the additional mark
2000-02-23 Bernhard Herzog <bernhard@users.sourceforge.net>
* Objects/regpoly.py:
* Objects/lcdtext.py:
* Filters/xfigloader.py:
* Filters/skloader.py:
* Filters/gziploader.py:
* Filters/bziploader.py:
* Filters/aisaver.py:
* Filters/ailoader.py:
Use xpot's special syntax to mark translatable strings.
2000-02-13 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/cmxloader.py (CMXFile.load_bitmap):
(CMXFile.load_rimage):
* Filters/ailoader.py: use PIL as a package, therefore change
"import Image" to "from PIL import Image" or use "import
PIL.Image" and refer to PIL.Image
2000-01-27 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/ailoader.py: Removed .ps and .eps from the list of
possible file name extensions. They mislead users to assume that
File->Open was the way to load EPS files.
2000-01-25 Bernhard Herzog <bernhard@users.sourceforge.net>
* Filters/bziploader.py (BZIP2Loader.Load): refer to self.filename
instead of just filename if extension != .bz2
* Filters/gziploader.py (GZIPLoader.Load): refer to self.filename
instead of just filename if extension != .gz
* Filters/bziploader.py (BZIP2Loader.Load): same as
GZIPLoader.Load below.
(BZIP2Loader.set_doc_class): same as GZIPLoader.set_doc_class
below.
* Filters/gziploader.py (GZIPLoader.Load): pass doc_class through
to load.load_drawing_from_file
(GZIPLoader.set_doc_class): This method is required in a loader in
0.7.x to pass the document class to the loader. Normally, it's
implemented in GenericLoader, but GZIPLoader isn't derived from
that
2000-01-23 Bernhard Herzog <bernhard@users.sourceforge.net>
* ChangeLog: created
|