Cenon CAM Change Log - 2008

2008-01-11 Georg Fleischmann
    * propertyList.m (propertyListFromNSColor()): Apple 10.4 workaround for NSCustomColorSpace
      -> we stay compatible with GNUstep, OpenStep, and OS-X before 10.4

2008-01-13 Georg Fleischmann
    * VPath.m,h (-lengthFrom:to:): new, returns the length of a sub-path

2008-01-19 Georg Fleischmann
    * VPolyLine.m (-length): add sqrt() instead of returning sqrt() of sum !
      Fix: correct length of PolyLine

2008-01-22 Georg Fleischmann
    * types.h (NSPointInternalToMM()): new

Cenon 3.9.0 pre 1

2008-02-05 Ilonka Fleischmann
	* IPText.m (-setAngle:, -setSizeWidth:, -setSizeHeight:):
                                                    [[[[self view] layerList] objectAtIndex:l] updateObject:g];
                                                    [[[self view] document] setDirty:YES];
	  IPText.m (-setFitHorizontal:, -setCenterVertical:, -setSerialNumber:):
                                                    [[[[self view] layerList] objectAtIndex:l] setDirty:YES]
                                                    [[[self view] document] setDirty:YES];
	  IPTextPath.m (-setSerialNumber:):             [[[[self view] layerList] objectAtIndex:l] setDirty:YES];
                                                    [[[self view] document] setDirty:YES];
	  IPALLText.m (-setLineHeight:, -setFontSize:): [[[[self view] layerList] objectAtIndex:l] setDirty:YES];
	  DocView.m (-changeFont:):                     [[layerList objectAtIndex:l] setDirty:YES];
	  VText.m (-textDidEndEditing:):                [[graphicView layerOfGraphic:self] updateObject:self];
                                                    [[[self view] document] setDirty:YES];
	  IPRectangle.m (-setAngle:):  [[[[self view] layerList] objectAtIndex:l] updateObject:g]
	-> Fix Text/Rectangle: Ausgabe-Neuberechnung nach Anderung geht nun ohne Sonderaufforderung
	* VText.m (-setTextBox:): [self kernToFitHorizontal]

Cenon 3.9.0 pre 2

2008-02-06 Ilonka Fleischmann
	* type1funs.m (decryptCharString()): malloc((len-4)*sizeof(Proc)) instead of malloc(len-4*sizeof(Proc))
	-> Fix: possible crash
	* VArc.m (-parallelObject::::): gibt jetzt auch full arc zurück wenn punkte gleich
	-> Fix: Konturberechnen von Vollkreisen mit kleinen Linienstummeln am start/end punkt tut jetzt
	* VCurve.m (-angle): bei den ersten beiden if bisle was verbessert
	-> Fix: Richtungsbestimmung verbessert ??
	* VCurve.m (-getListOfObjectsSplittedFrom::): pts checken mit pointOnCurveNextToPoint()
	-> Fix: Punch/Verdeckte areas frei rechnen mit Kurven geht jetzt
	* VArc.m (-tangentIntersectionArc:::::::): at fast= 0 return T_OTHER nur wenn centers dicht beieinander

	* DocView.m (-drawControls:): ruft drawKnobs und drawControls::: auf
	* VPath.m (-drawControls:direct:scaleFactor:): ruft drawControls::: auf
	* VCurve.m (-drawControls:direct:scaleFactor:): ruft drawControls::: auf
	//* VGroup.m (-drawControls:direct:scaleFactor:): ruft drawControls::: auf // schon drinn
	* VGraphic.m (): static lgrayRectList etc
	* VGraphic.m (+fastKKnobFill:isBlack:): int instead BOOL 2 is fill lGray...
	  VGraphic.m (+showFastKKnobFills): lgrayRectCount, blackRectCount dann dkgrayRectCount
	* VGraphic.m (drawKnob()): selectedKnob +2 instead of +1
	  VGraphic.m (drawKnob()): erst light dann black
	* VGraphic.m (drawControl()): neu malt erst black dann dkGray
	* VGraphic.m (-drawControls:direct:scaleFactor:): ruft drawControl() auf - malt die Kontrollpunkte
	* VGraphic.m (-drawKnobs:direct:scaleFactor:):malt nur noch start/endpunkt mit Ausnahmen !
	-> Knobs are now drawn black with gray border, handles are drawn gray with black border

2008-02-07 Ilonka Fleischmann
    * VRectangle.m (-pointWithNum:): default changed from upper left (UL) to lower left (LL)
    -> fix for join

2008-02-08 Ilonka Fleischmann
	* PathContour.m (-buildPath::::): || s.x > e.x raus bei 1. if // search stop pt ..
	  PathContour.m (-buildPath::::): ( indexE != -1 || indexS != -1 ) instead 2x indexE
	* PathContour.m (-contourPath::::),
	  PathContour.m (-contourImage::::),
	  PathContour.m (-contourList::::):  ruft buildPath::: nur auf wenn auch punkte gefunden
	-> Fix: Raster Contour

2008-02-17 Georg Fleischmann
    * vhf2DFunctions.h (SqrPoint()): new

2008-02-23 Georg Fleischmann
    * types.h (V3PointMMToInternal(), NSPointMMToInternal()): new

2008-02-25 Ilonka Fleischmann
	* VGraphic.m (-maxKnobSizeWithScale:): (KNOBSIZE+4.0) instead of (KNOBSIZE+2.0)
	  -> damit bleiben keine graue linien stehen
	* VGraphic.m (-drawKnobs:direct:scaleFactor:): knobsize = (selectedKnob) ? KNOBSIZE+3.0 : KNOBSIZE+1;
	  -> schwarze sind nun gršsser
	* VGraphic.m (-drawControls:direct:scaleFactor:): VImage Ausnahme
	  VGraphic.m (-drawKnobs:direct:scaleFactor:): malt nur noch start/endpunkt mit VImage Ausnahme !
	  -> auch VImage Knobs werden damit richtig/alle schwarz gemalt
	* VGraphic.m (-drawKnobs:direct:scaleFactor:): isKindOfClass:[VRectangle class] - ==i instead of ==0
	  -> Fix Knobs: Rechtecke und Text, damit wird nur der einzelne selektierte Knopf angezeigt

	* VCurve.m (-sqrDistanceCurve:): &pc1[0] instead of &pc[0] (also with [3]) - else we check self point
	* VPath.m (-subPathInsidePath::): wenn !iCnt - nur beim ersten mal (s == 1) - gilt wie bei PathCFill.m
	* VPath.h (- (id)unnest): aufgenommen in den Header
	* VPath.h, m (- (int)getLastObjectOfSubPath2:): new - findet auch das ende bei open paths
    -> several bug fixes that showed up with CAM bundle

	//* VPath.m (-getIntersectionsForFilling:with:): new schiebt start/end punkte von linie weg
    -> better intersection method, that should be used for point in polygon test (inactive for now)

	* VPath.m, h (-join:): ruft complexJoint mit 1.0 auf statt mit 0.1 - zum Schliessen beim optimieren
	* VPath.m (-complexJoin:): umgestellt, schliesst jetzt auch kleine Lücken, ruft optimizePath auf zum optimieren
	* VPath.m, h (-optimizePath:): geht nur auf self ! nicht mehr auf externen Pfad
	  VPath.m (-optimizePath:): NSLog() instead of return NO - so we close the rest as good as possible
	  VPath.m (-optimizePath:): we test only on dist or dHalf not on distQuarter
	  VPath.m (-optimizePath:): search for realy nearest next element now - changed a lot !
	  VPath.m (-optimizePath:): if d < dist/2.0 close with closeGapBetween
	* VPath.m (-optimizeSubPathsToClosedPath::): NSLog()s verringert - one continue instead of break
	* VPath.m, h (-closeGapBetween:and:): ist jetzt BOOL statt void - return YES or NO
	  VPath.m (-closeGapBetween:and:): horizontale/waagerechte linien werden entsprechend verbunden
	* VRectangle.m (-pointWithNum:): gibt bei > 3 origin zurück - für closePath - ist auch logischer zu den anderen Grafiken
	-> Fix: join/Vereinigen - Pfad schliessen ist besser

2008-02-28 Georg Fleischmann
    * VImage.m (-writeFilesToDirectory:): if saving on Apple fails, we safe uncompressed
               (4 bit images happen to be not supported here from Apple)
      -> Fix, Apple: workaround - it's now possible to save 4 bit images on Apple

    * functions.m          (localLibrary(), userLibrary()),
      vhfCommonFunctions.m (vhfLocalLibrary(), vhfUserLibrary():
      -> added search in "Library/Application Support" for Apple

Cenon 3.9.0 pre 3

2008-03-09 Georg Fleischmann
    * Document.m (-save): if Apple fails, we use GSPropertyListSerialization to save as ASCII PropertyLists
      Apple, GSPropertyListSerialization.m, h: new
      -> this allows us to save ASCII Property Lists compatible with OpenStep and GNUstep
         (the Mac OS X class is not working for ASCII Property Lists)

2008-03-13 Georg Fleischmann
    * IPAllAcc.m, h, nib: new allow modules to add their Accessory views to the Inspector
2008-03-17 Ilonka Fleischmann
	* InspektorPanel.h, m (-setLevelAt:, windowAt): IP_ACC instead of IP_TEXT
	* IPAccText.h, m (): new
2008-03-17 Georg Fleischmann
    * IPBasicLevel.m, h (-name): new

2008-03-13 Ilonka Fleischmann
	* VPath.m (-getLastObjectOfSubPath2:): umgestellt, damits auch richtig ist bei einem letzen einzelnen element
2008-03-18 Georg Fleischmann
    * VGraphics.h (relief, reliefType, reliefDirection): added here
      VGraphics.m (-init, -initWithCoder:, -encodeWithCoder:, propertyList, initFromPropertyList:): relief added
      VImage.h (relief, reliefType): removed
      VImage.m (-initWithCoder:, -encodeWithCoder:, propertyList, initFromPropertyList:): relief removed
      IPImage.m, h, nib: relief variables and methods removed

2008-03-20 Ilonka Fleischmann
	* IPAllAcc.m (-update:): if (!selectIx) [[accPopup itemAtIndex:0] setEnabled:YES]; einer muss selected sein
	  IPAllAcc.m (-init): [accPopup setAutoenablesItems:NO]
	* IPAllFilling.m (-init): [fillPopup setAutoenablesItems:NO]
	* IPAllStrokeWidth.m (-init): [strokePopup setAutoenablesItems:NO]
	  IPAllStrokeWidth.m (-update:): Text etc [[strokePopup itemAtIndex:0] setEnabled:YES] instead NO
	  IPAllStrokeWidth.m (-update:): else [both setEnabled:YES] instead nothing
	-> PopUp Buttons werden richtig enabled/disabled im Inspektor auf Apple

2008-03-21 Georg Fleischmann
    * LayerDertailsController.m (-showPabnel:): disable separation, [typePopup setAutoenablesItems:NO] added

2008-04-18 Ilonka Fleischmann
	* PathContour.m (-optimizePath:): close Paths now !
	* VPath.h,m (-coordBoundsOfSubPath:startIx:endIx:): in VPath.h aufgenommen
	* VPath.m (-subPathInsidePath:): Es wird die ganze liste durchgegangen (immer ptAt: 0.4) bis einer ohne iCnt = -1
	  VPath.m (-subPathInsidePath:): free(pts); pts = NULL 2-3x und iCnt != -1 sonst double free oder fehler
	  VPath.m (-subPathInsidePath:): spIcnt = 0; init after each sidestep !
	  VPath.m (-subPathInsidePath:): line must be inside spRect etc
	  VPath.m (-subPathInsidePath:): SIDESTEP 1.5 instead of 0.3
	* VPath.m (-directionOfSubPath::): ganz anders - pt re/li der graphic inside oder outside des subPaths
	  VPath.m (orthPointAt()): new
	-> Richtung bei Kontur

2008-04-24 Ilonka Fleischmann
	* VImage.m (-drawWithPrincipal:): if we mustDrawPale we draw a light green rect instead of the Image 2x
	-> Make something visible upon the image also

2008-04-25 Georg Fleischmann
      VImage.m methods for relief removed (they are in output category)

2008-04-29 Ilonka Fleischmann
    * VPath.m (-subPathInsidePath:): if ( (Even(iCnt) && ... rest not needed

2008-04-30 Ilonka Fleischmann
	* PerformanceMap.m (-drawInRect:principal:): AutoreleasePool ums draw der Graphiken
	-> verbessert das Speicherverhalten beim Dateioeffnen / wenn alles gemalt wird / beim Malen
	* DocView.m (-mouseDown::): ganz unten else if ()
	-> bei NSZeroRect wird nicht gemalt

2008-05-07 Georg Fleischmann
    * Apple: Cenon 3.9.0 pre 4

Cenon 3.9.0 pre 4


2008-06-07 Georg Fleischmann
    * VImage.h, VRectangle.h, VClipRectangle.h: values of PT_UR/PT_LR exchanged to have them sorted for a loop (ex. hit:fuzz:)
    * VImage.m (-hit:fuzz:): use preferences to select by border or inside
      VImage.m (-hit:fuzz:): if image is clipped use clip path for selection
    -> this allows selection of an image either inside / or at its border, according to preferences
    -> and selection of a clipped image at the border of the clipping path
    * VImage.m (-splitTo:): place image behind path to have both visible
    -> this places the image behind the path for easier handling

2008-06-15 Georg Fleischmann
    * HPGLImport.m (-getGraphicFromData:): imply a PD command, when we get an AA or AR command
    -> this makes the HPGL import more tolerant

2008-06-21 Ilonka Fleischmann
	* GerberExportSup.m (-exportPath:): subPathsInCnt neu - Abfrage hierauf (subPathsInCnt > 1)
	-> open/unfilled Paths will be exported now

2008-06-21 Georg Fleischmann
    * GerberExportSub.m (-exportGroup:): check for [list count] > 0 before getting object at index 0
     -> removes exception when exporting MultiPage_de.cenon example as Gerber

internal Cenon 3.9.0 pre 5

2008-06-27 Georg Fleischmann
    * Main.nib (Apple): key-shortcut for Grid changes (# is not working on Apple)
      turn Grid on:  Command +
      align to Grid: Command Alt +
      set Grid:      Command Shift + (*)
    * VImage.m (-hit:fuzz:): call -setFill:optimize: only if clipPath responds to this method

2008-07-14 Ilonka Fleischmann
	* VPath.m (-contour:inlay:inlay:splitCurves:): 360 arc inside Path - calculate contour with precorrected gThis
	-> Fix Contour: single 360 Arc inside Path with width work now

2008-07-19 Georg Fleischmann
    * Document.m, h (-setBaseUnit:, -baseUnit): new to set and ask for Document unit
      Document.m, h (-convertToUnit:, -convertFrUnit:, -convertMMToUnit:, -convertUnitToMM:): new
                     replaces the functions of the same name
      Document.m (+newFromFile:, -save): load/save baseUnit
      Document.h (baseUnit): new
      Document.m (-init, +newFromList:): init baseUnit, call init from newFromList (was mssing)
      PSSettings.m, h, nib: active for the methods using the [Document -convert...] method
      DocWindow.m (-windowDidBecomeMain:): send notification to update unit
      IP*.m,
      TPMove.m,
      TilePanel.m,
      WorkingAreaPanel.m (-set:, -update:): call unit methods from Document, some clean-up
      -> This implements Document Units (Project Settings)
    * VImage.m (-initFromPropertyList:): case for non-tiff removed (standard loading works for all formats)
      -> This allows loading of images like JPG, GIF, etc... (only save is missing)
    * WorkingAreaPanel.m (-awakeFromNib, -unitHasChanged:, -documentHasChanged:, -update:):
      new, update when Document or Unit changes, we also set the Unit in the Panel

2008-07-20 Georg Fleischmann
    * VImage.m (-initFromPropertyList:, -propertyList): Thumbnail has always extension "tiff"
      VImage.m (-initFromPropertyList:, -propertyList): save added for other file formats (GNUstep and Apple)
      VImage.m, h (+fileExtensionForFileType:): new
      VImage.m (-setName:, -setType:): set correct file extension for imageName
      IPImage.m (-setName:, -setCompressionType:): set appropriate file extension
      IPImage.nib: file types for BMP, GIF, JPG, PNG added
      -> this implements storing images as BMP, GIF, JPG, PNG (GNUstep, Apple) - as far as supported by system

internal Cenon 3.9.0 pre 5

2008-07-23 Georg Fleischmann
    * German.lproj/Localizable.strings: localization for Project Settings
    * ProjectSettings.m, h, nib: ready to recieve additional panes from other modules

2008-07-24 Georg Fleischmann
    * Document.h (-docSettingsDict, docSettingsDict): new
      Document.m (-docSettingsDict): new
      Document.m (-save, -newFromFile:): docSettingsDict added with key "docSettings"
    * PreferencesMacros.h: Prefs_* for CAM removed
      dvTile.m (-incrementSerialNumbers): Prefs_IncrementSerial removed here
2008-07-25 Georg Fleischmann
    * DocView.m (-validateMenuItem:): queries for OptimizeMove removed
      -> "Send to Back", "Bring to Front" will not be disabled when OptimizeMoves is activated!
    * VPath.m (-contour:inlay:splitCurves:): Prefs_UseRaster + [self contourWithPixel:w] removed !
      VPath.m (-contour:useRaster:, -contour:inlay:splitCurves:useRaster:): new

2008-07-30 Georg Fleischmann
    * Localized.strings: Project Settings removed
      PSInfo.m, PSSettings.m, PSFontInfo.m: get name from window title (works because we use a box as view)
    * ProjectSettingsPanel.m, h (-indexOfItem:): new
      App.h (-projectSettings.h): new
      -> this allows querying for the index of an item, and directly selecting it from source

2008-07-31 Georg Fleischmann
    * IPMark.nib, Apple: Switches connected correctly to -setLock: and -setPointZ:

2008-08-05 Georg Fleischmann
    * Apple, Main.nib: "Project Settings" moved to "Cenon"-Menu, directly below "Preferences"

2008-08-06 Ilonka Fleischmann
	* VCurve.m (-getListOfObjectsSplittedFrom::): pts in bounds check with 20*TOLERANCE instead 1* same like in intersectCurves()
	-> Fix Contour: Curve splitted now if other intersection point is near Start/End point

2008-08-11 Georg Fleischmann
    * VArc.m (-parallelObject::): if angles get extreme, return a line from new start to end
    -> this solves the problem of the client-file and looks more promising.
       do we have to check the radius to be small enough? What is small enough?
       do we have to check, if s or e was switching the quadrant (s.y > c.y but start.y < center.y)?

2008-08-18 Georg Fleischmann
    * VHFShared/vhf2DFunctions.m, h (vhfIsIntValueInArray()): new, valueInArray() is deprecated now

2008-08-26 Ilonka Fleischmann
	* VArc.m (-parallelObject:): radius nearly 0 and s nearly e - line instead of full arc
	* VPath.m (-drawWithPrincipal:): on Apple allways stroke paths 	  col = (!f || !width) ? fillColor : color;
	  VPolyLine.m (-drawWithPrincipal:): on Apple allways stroke polyLines    col = (!f || !width) ? fillColor : color;
	  VRectangle.m (-drawWithPrincipal:): if ( width > 0.0 || !filled || Diff(size.x, 0) < 500*TOLERANCE ...
	-> Fix draw: We see now everything of each path/polyline/Rectangle

2008-08-27 Georg Fleischmann
	* VArc.m: clean-up of some special characters

2008-09-08 Ilonka Fleischmann
	* DocView.m (-moveObject:::): drawing rect_draw_apple instead rect_drawlast
	-> Fix: Scrolling on Apple is now working fine
    Note: scrolling on OpenStep with Scale != 1.0 is not working fine
    (tat vorher schon nicht - pixel versatz (ohne -centerScanRect: gibts es bei 100% keinen Versatz)

2008-08-27 Georg Fleischmann
    * German Main.nib, Edit-Menu: Reverse Direction translated to German

Cenon 3.9.0 pre 5

2008-09-16 Georg Fleischmann
    * IPTextPath.nib: set resize mask for pathView box -> makes it look correctly
    * IPSinking.nib (German): sinking type icons placed better

2008-09-20 Georg Fleischmann
    * VPath.m     (-drawWithPrincipal:): reverted change from 2008-08-26
	  VPolyLine.m (-drawWithPrincipal:): reverted change from 2008-08-26

2008-10-02 Ilonka Fleischmann
	* DocView.m (-addLayerWithName:type:tag:list:editable:): after searching l - if ( l == -1 ) l = 0;
	-> create new Layer also if no LAYER_STANDARD extists

2008-10-08 Georg Fleischmann
    * VPath.m     (-drawWithPrincipal:): will be stroked on Apple if filled solid
	  VPolyLine.m (-drawWithPrincipal:): will be stroked on Apple if filled solid
      -> this avoids invisible parts

2008-10-11 Georg Fleischmann
    * VPolyLine.m, h (-closed): new
    * VPath.m (-changeDirection:): change direction of open paths added

2008-10-16 Ilonka Fleischmann
	* VPath.m (-uniteWith:): gPrevE define outside of for() line: 8816
	-> Fix Unite: PCB Calculation and Punch

	* VArc.m (-getListOfObjectsSplittedFrom::): Max(5.0*TOLERANCE, radius/10000.0) instead .../ 1000.0
	  VArc.m (-getListOfObjectsSplittedFromGraphic:): Max(5.0*TOLERANCE, radius/1000.0)  instead .../ 1000.0
	  VArc.m (-getListOfObjectsSplittedFrom::): > Max(3.5*TOLERANCE, radius/10000.0) instead > Max(3.5*TOLERANCE, radius/1000.0)
	-> Fix split Arc: Contour etc.

2008-10-21 Georg Fleischmann
    * dvPasteborad.m (-pasteFromPasteboard:andLink:at:): when pasting many layers to single layer, keep order
    -> pasting of several layers to one layer keeps order of graphics elements

Cenon 3.9.0 pre 6

2008-11-12 Georg Fleischmann
    * LayerObject.m (-propertyList, -initWithPropertyList:): layerDict added
      LayerObject.h: layerDict added
    -> this allows to store additional stuff without a subclass

Cenon 3.9.0 pre 7

2008-11-29 Ilonka Fleischmann
    * PSImport.m (-importPS:): in GhostScript version of -importPS: initialize state.color
    -> imported objects get a color.

2008-12-01 Ilonka Fleischmann
	* VGraphic.m, h (-init, -initWithCoder, -encodeWithCoder:, -propertyList:, -initFromPropertyList:inDirectory:): reliefFlatness
	* VPath.m (-drawAxialWithPrincipal:): correkt start-/endAngle & endAngle instead endAngle-360
	  -> Fix: Axial Filling faster and better
	* VPath.m (-drawWithPrincipal:): col = (!f || (!width && filled)) ? fillColor : color; instead col = (!f || !width) ..
	* VPolyLine.m (-drawWithPrincipal:): col = (!f || (!width && filled)) ? fillColor : color; instead col = (!f || !width) ..
	-> Fix: unfilled path now drawn with (stroke) color

	* DocView.m (-redrawObject:::): drawing rect_draw_apple instead rect_last
	-> Fix: Scrolling on Apple is now working nearly fine

2008-12-09 Georg Fleischmann
    * IPAllAcc.nib, m, h:  created on OpenStep, added to Project
      IPAccText.nib, m, h: created on OpenStep, added to Project
      IPImage.nib: Relief stuff removed
      ipAcc.tiff: added to Project
      IPAllText.m, h, nib: removed from Project
      nib2gmodel.plist: line for IPAllAcc and IPAccText added, and line for IPAllText remove
      Nib2gmodel.sh:    IPAllAcc, IpAccText added, and IPAllText removed
      -> this adds the Accessory Inspector to OpenStep
    * WorkingAreaPanel.nib: UNIT added to OpenStep
    * ProjectSettingsPanel.nib: correct PopUp action to -setLevel:
      PSSettings.nib: Popup-Menu wired correctly, everything else removed

2008-12-18 Ilonka Fleischmann
	* DocView.m (-selectColor:): VGroup has fillColor now and can be compared here
	  -> Fix select: Groups also can be selected by selectColor
	* VPath.m (-contour:inlay:splitCurves:): if ( [gThis length] < 15.0*TOLERANCE ) instead < 10.0*TOLERANCE
	  -> Fix Contour: More Tolerance to small lines
	* GerberExportSub.m (-exportToFile:): break; polygon output if ( b >= maxInside ) instead (drawed == NO)
	-> Fix Gerber Export: We now also export paths stacked upon each other
