Cenon Change Log - September 2005

2005-09-01 Georg Fleischmann
	* DocView.m, h (-isMultiPage, -pageCount, -knowsPagesFirst:, -rectForPage:): new
	  Document (-print:): multi page printing added
	  IPAllLayers.m (-displayChanged:): disable other pages
	  -> Printing of multi page documents
	* DocView.m (-drawText:): display page number #PAGENUM# and page count #PAGECNT#
	                          from templates for all, even, and odd page numbers
	  -> Template for page numbering
	* VText.m, h (-replaceSubstring:withString:): new

2005-09-02 Ilonka Fleischmann
	* VPath (-contour:inlay:spliCurves:): iPts = NULL two times, clean-up

2005-09-03 Ilonka Fleischmann
	* VCurve.m (-hitControl::controlSize:) if ( ...dist <= lastDist...  instead of  dist < lastDist 
	  -> take p0 or p3 in case a support point (p1 / p2) is placed upon a start/end point (p0 / p3)

2005-09-03 Ilonka Fleischmann
	* HiddenArea.m (-removePartsOf:hiddenBy:) kindOfClass VRectangle was missing in case without split
	  HiddenArea.m (-removeSingleGraphicsInList:) g2 instead of g1 in kindOfClass VRectangle in j Schleife
	  HiddenArea.m (-uniteAreas:): ([og isKindOfClass:[VRectangle class]] && ![og filled]) was missing and for PolyLine ![og filled] !
	  HiddenArea.m (-uniteAreas:) ([cg isKindOfClass:[VRectangle class]] && ![cg filled]) fehlte
	  HiddenArea.m (-uniteAreas:)  auskommentiert: if ( [og isKindOfClass:[VGroup class]] ) [self uniteAreas:[(VGroup*)og list]];
	  HiddenArea.m (-removeHiddenAreas:) verndert, damit auch Gruppen gepuncht werden knnen
	  HiddenArea.m (-uniteAreas:)  verndert, damit auch Gruppen unitet werden knnen
	* DocView.m (-validateMenuItem:) for punch we also search (recursive) within group for a filled object
	* VGroup.h, m (-recursiveObjectAtIndex:): new
	              (-recursiveRemoveObjectAtIndex:): new
	              (-recursiveInsertObject:atIndex:): new (funktionieren recursive auf die list der Group)
	* VGroup.m (-countRecursive): the path objects are no longer counted! (wasn't used yet)
	* VGroup.m (-getIntersectionsAndSplittedObjects:with) auskommentiert
	  VGroup.m (-getIntersectionsAndSplittedObjects:with) for malloc ptsCnt = Min(100, [self numPoints]) + realloc
	  VGroup.m (-getIntersections:with:) ptsCnt = Min(100, [self numPoints]) instead of [list count] * 9 + realloc
	  VGroup.m (-getListOfObjectsSplittedFrom::) auskommentiert
	  VGroup.m (-getIntersections:with:) auskommentiert
	  VGroup.m (-uniteWith:) auskommentiert
	-> damit kann mit Rechtecken / Gruppen gepuncht werden (verdeckte Flchen wegrechnen)

2005-09-05 Georg Fleischmann
	* App.m (-loadModules:): load modules only once, if located in several places

2005-09-07 Ilonka Fleischmann
	* IPPath.h,m (-update:) links/rechts Buttons hinzugefgt beim enablen/disablen
	  IPPath.m (-update:)
	  IPPolyLine.m (-update:) x/y-Fields of selected Point are set always (the fields showed wrong values)
	  IPPath.nib engl/dtsch : 4x buttons connected und enabled

2005-09-08 Ilonka Fleischmann
	* GerberExportSub.m (-exportPath:) writeLayerPolarityMode: aufrufe verbessert
		(Fix: es werden jetzt keine "leeren" Lagen (%LPD* %LPC* %LPD* oder so) mehr geschrieben)
	* GerberExportSub.m (-exportPolyLine:) wenn gefllt writePolygonMode:YES
		(Fix: gefllte PolyLines werden jetzt auch gefllt exportiert)

2005-09-08 Ilonka Fleischmann
		(Fix: jede Menge Berechnungsfehlerchen beim smtlichen Berechnungen (PCB/ GerberImport / Punch ...)
	* VPath.m (-getLastObjectOfSubPath:) distance zur nchsten graphic checken !
		(Fix: der macht zuviele fehler sonst mit der grossen Toleranz beim contour uniteWith, import, export fast alle Berechnungen)
	  VPath.m (-intersectionsForPtInside:) pointWithToleranceInArray() with TOLERANCE tolerance instead of pointInArray()
	  VPath.m (-uniteWith:) if (!removedFromNg || !removedFromUg) bei uStartIs auch subpaths rausschmeissen
	  VPath.m (-uniteWith:) if (...((i+1 >= listCnt) ? (0) : (i+1)) == startI) instead of i+1 == startI
	  VPath.m (-uniteWith:) add closed chapes [splitListUg count] checked with uStartIs[] 2 stellen
	  VPath.m (-uniteWith:) bei uStartIs[] suche distance zur nchsten graphic checken
	  VPath.m (-uniteWith:) nothing splitted abfrage von vorne nach if (!removedFromNg && !removedFromUg) gesetzt ! 
	  VPath.m (-uniteWith:) correct endIs[eCnt-1] if last object in list (only the index)
	  VPath.m (-uniteWith:) if ((eptCnt > 1 && (SqrDistPoints(closePt, ePts[1]) < SqrDistPoints(closePt, ePts[0]) zustzlich zu < tol+tol
	  VPath.m (-uniteWith:) if (sptCnt > 1 && ...  < SqrDistPoints(ej, sPts[0])... zustzlich zu < tol*tol wie oben (fr ej und sj hier)
	* VPath.m (-contourOpen:) (w < 0.0 && Abs(w) >= width) instead of Abs(w) >= width
		 (Abstand war falsch )
	* VPath.m (-join:) [self deselectAll] UND selectedObject = -1;
		(Fix: die SelektierPunkte sind jetzt richtig (nmlich keiner mehr) nach dem join zweier objekte)
	* VPolyLine.m (-pointWithNum:) if(pt_num < 0) return NSMakePoint( 0.0, 0.0)
	  VPolyLine.m (-getIntersections:with:) if intersection point lays on a peek /\ or \/ we must have two intersectionpoints !!
	  VPolyLine.m (-uniteWith:) nothing splitted abfrage von vorne nach if (!removedFromNg && !removedFromUg) gesetzt ! 
	  VPolyLine.m (-uniteWith:) if (!removedFromNg || !removedFromUg) bei uStartIs auch subpaths rausschmeissen
	  VPolyLine.m (-uniteWith:) if (...((i+1 >= listCnt) ? (0) : (i+1)) == startI) instead of i+1 == startI
	  VPolyLine.m (-uniteWith:) add closed chapes [splitListUg count] checked with uStartIs[] 2 stellen
	  VPolyLine.m (-uniteWith:) bei uStartIs[] suche distance zur nchsten graphic checken
	  VPolyLine.m (-uniteWith:) correct endIs[eCnt-1] if last object in list (only the index)
	  VPolyLine.m (-uniteWith:) if ((eptCnt > 1 && (SqrDistPoints(closePt, ePts[1]) < SqrDistPoints(closePt, ePts[0]) zustzlich zu < tol+tol
	  VPolyLine.m (-uniteWith:) if (sptCnt > 1 && ...  < SqrDistPoints(ej, sPts[0])... zustzlich zu < tol*tol wie oben (fr ej und sj hier)
	* VArc.m (-uniteWith:) if (!removedFromNg || !removedFromUg) bei uStartIs auch subpaths rausschmeissen
	  VArc.m (-uniteWith:) if (...((i+1 >= listCnt) ? (0) : (i+1)) == startI) instead of i+1 == startI
	  VArc.m (-uniteWith:) nothing splitted abfrage von vorne hinter if (!removedFromNg && !removedFromUg) gesetzt ! 
	  VArc.m (-uniteWith:) add closed chapes [splitListUg count] checked with uStartIs[] 2 stellen
	  VArc.m (-uniteWith:) bei uStartIs[] suche distance zur nchsten graphic checken
	  VArc.m (-uniteWith:) correct endIs[eCnt-1] if last object in list (only the index)
	  VArc.m (-uniteWith:) if ((eptCnt > 1 && (SqrDistPoints(closePt, ePts[1]) < SqrDistPoints(closePt, ePts[0]) zustzlich zu < tol+tol
	  VArc.m (-uniteWith:) if (sptCnt > 1 && ...  < SqrDistPoints(ej, sPts[0])... zustzlich zu < tol*tol wie oben (fr ej und sj hier)
	  VArc.m (-isPointInsideOrOn:) on test before in test
	  VArc.m (-intersectArc::::) centers nearly identical < 2.0*TOLERANCE instead of < TOLERANCE
	  VArc.m (-intersectArc::::) tol = 1.4*TOLERANCE instead of 2.0*TOLERANCE (fr at = ..)
	  VArc.m (-intersectLine:::) if ((an>=ba && an<=ea) || .. < 1.5*TOLERANCE instead of < TOLERANCE 2x
	* VRectangle.m (-uniteWith:) if (!removedFromNg || !removedFromUg) bei uStartIs auch subpaths rausschmeissen
	  VRectangle.m (-uniteWith:) if (...((i+1 >= listCnt) ? (0) : (i+1)) == startI) instead of i+1 == startI
	  VRectangle.m (-uniteWith:) nothing splitted abfrage von vorne hinter if (!removedFromNg && !removedFromUg) gesetzt ! 
	  VRectangle.m (-uniteWith:) add closed chapes [splitListUg count] checked with uStartIs[] 2 stellen
	  VRectangle.m (-uniteWith:) bei uStartIs[] suche distance zur nchsten graphic checken
	  VRectangle.m (-uniteWith:) correct endIs[eCnt-1] if last object in list (only the index)
	  VRectangle.m (-uniteWith:) if ((eptCnt > 1 && (SqrDistPoints(closePt, ePts[1]) < SqrDistPoints(closePt, ePts[0]) zustzlich zu < tol+tol
	  VRectangle.m (-uniteWith:) if (sptCnt > 1 && ...  < SqrDistPoints(ej, sPts[0])... zustzlich zu < tol*tol wie oben (fr ej und sj hier)
	* VRectangle.m (-drawWithPrincipal:) Max( 0.01, size.x) instead of Max( 1.0, size.x) 
		(Fix: Rechtecke werden jetzt auch bis zu einer Grsse von 0.01 Kantenlnge richtig gemalt)

next Cenon 3.71
