diff -C 2 -r uml-1.0.3.orig/uml/assoccopy.cpp uml-1.0.3.new/uml/assoccopy.cpp
*** uml-1.0.3.orig/uml/assoccopy.cpp	Thu Sep 13 12:29:41 2001
--- uml-1.0.3.new/uml/assoccopy.cpp	Tue Oct  9 16:50:41 2001
***************
*** 142,144 ****
  	wbID = oldBID;
  	fID = oldFID;
! }
\ No newline at end of file
--- 142,144 ----
  	wbID = oldBID;
  	fID = oldFID;
! }
diff -C 2 -r uml-1.0.3.orig/uml/association.cpp uml-1.0.3.new/uml/association.cpp
*** uml-1.0.3.orig/uml/association.cpp	Fri Sep 21 01:25:24 2001
--- uml-1.0.3.new/uml/association.cpp	Tue Oct  9 16:50:46 2001
***************
*** 101,105 ****
  				point.setY(point.y() + multiA -> height());
  			if(x1 > x2)
! 				point.setX(point.x() - (multiA -> width() * 1.5));
  		}
  		multiA -> setLinePos(point.x(), point.y());	
--- 101,105 ----
  				point.setY(point.y() + multiA -> height());
  			if(x1 > x2)
! 				point.setX(int(point.x() - (multiA -> width() * 1.5)));
  		}
  		multiA -> setLinePos(point.x(), point.y());	
***************
*** 113,117 ****
  				point.setY(point.y() + multiB -> height());
  			if(x1 < x2)
! 				point.setX(point.x() - (multiB -> width() * 1.5));
  		}
  		multiB -> setLinePos(point.x(), point.y());
--- 113,117 ----
  				point.setY(point.y() + multiB -> height());
  			if(x1 < x2)
! 				point.setX(int(point.x() - (multiB -> width() * 1.5)));
  		}
  		multiB -> setLinePos(point.x(), point.y());
***************
*** 368,372 ****
  		x = view -> childX(text);
  		y = view -> childY(text);
! 		h = text -> height() * 1.5;
  		if(pos.x() > (x - lOffsetX) && pos.y() > y && pos.x() < (x + rOffsetX) &&
   pos.y() < (y + h))
--- 368,372 ----
  		x = view -> childX(text);
  		y = view -> childY(text);
! 		h = int( text -> height() * 1.5 );
  		if(pos.x() > (x - lOffsetX) && pos.y() > y && pos.x() < (x + rOffsetX) &&
   pos.y() < (y + h))
***************
*** 484,488 ****
  		x = view -> childX(text);
  		y = view -> childY(text);
! 		h = text -> height() * 1.5;
  		if(pos.x() > (x - lOffsetX) && pos.y() > y && pos.x() < (x + rOffsetX) &&
   pos.y() < (y + h))
--- 484,488 ----
  		x = view -> childX(text);
  		y = view -> childY(text);
! 		h = int( text -> height() * 1.5 );
  		if(pos.x() > (x - lOffsetX) && pos.y() > y && pos.x() < (x + rOffsetX) &&
   pos.y() < (y + h))
diff -C 2 -r uml-1.0.3.orig/uml/umlview.cpp uml-1.0.3.new/uml/umlview.cpp
*** uml-1.0.3.orig/uml/umlview.cpp	Fri Sep 21 00:20:31 2001
--- uml-1.0.3.new/uml/umlview.cpp	Tue Oct  9 16:50:52 2001
***************
*** 339,346 ****
        	int totalCount = a -> getTotalCount();
       		float countOffset = (float)count / (float)(totalCount + 1);
!      		xa = childX(wa) + wa->width() * countOffset;
!      		xb = childX(wb) + wb->width() * countOffset;	
!       	ya = childY(wa) + wa->height() * countOffset;
!      		yb = childY(wb) + wb->height() * countOffset;
  		
        	//calculate all the values needed to draw the lines, arrow & diamond heads
--- 339,346 ----
        	int totalCount = a -> getTotalCount();
       		float countOffset = (float)count / (float)(totalCount + 1);
!      		xa = int( childX(wa) + wa->width() * countOffset );
!      		xb = int( childX(wb) + wb->width() * countOffset );	
!       	ya = int( childY(wa) + wa->height() * countOffset );
!      		yb = int( childY(wb) + wb->height() * countOffset );
  		
        	//calculate all the values needed to draw the lines, arrow & diamond heads
***************
*** 351,357 ****
  			double siny = halfLength * sin(slope);
  			double arrowSlope = slope + atan(1);
! 			QPoint arrowPointA(point.x() - halfLength * cos(arrowSlope), point.y() - halfLength * sin(arrowSlope));
  			arrowSlope = slope - atan(1);
! 			QPoint arrowPointB(point.x() - halfLength * cos(arrowSlope), point.y() - halfLength * sin(arrowSlope));
  		
  			if(xa > xb)
--- 351,357 ----
  			double siny = halfLength * sin(slope);
  			double arrowSlope = slope + atan(1);
! 			QPoint arrowPointA(int( point.x() - halfLength * cos(arrowSlope)), int( point.y() - halfLength * sin(arrowSlope)) );
  			arrowSlope = slope - atan(1);
! 			QPoint arrowPointB(int( point.x() - halfLength * cos(arrowSlope)), int(point.y() - halfLength * sin(arrowSlope)) );
  		
  			if(xa > xb)
***************
*** 363,368 ****
  			else
  				siny = siny > 0 ? siny * -1 : siny;
! 			QPoint midPoint(point.x() + cosx, point.y() + siny);
! 			QPoint fullPoint(point.x() + cosx * 2 , point.y() + siny * 2);
  			
        	//update floating text display position
--- 363,368 ----
  			else
  				siny = siny > 0 ? siny * -1 : siny;
! 			QPoint midPoint(int(point.x() + cosx), int(point.y() + siny));
! 			QPoint fullPoint(int(point.x() + cosx * 2) , int(point.y() + siny * 2));
  			
        	//update floating text display position
***************
*** 1002,1009 ****
  	b2 = getSlope(q1, q2);
  	
! 	a1 = p1.y() - b1 * p1.x();
! 	a2 = q1.y() - b2 * q1.x();
! 	x = ( -1 * (a1 - a2) ) / (b1- b2);
! 	y = a1 + (b1 * x);
  
  
--- 1002,1009 ----
  	b2 = getSlope(q1, q2);
  	
! 	a1 = int( p1.y() - b1 * p1.x() );
! 	a2 = int( q1.y() - b2 * q1.x() );
! 	x = int( ( -1 * (a1 - a2) ) / (b1- b2) );
! 	y = int( a1 + (b1 * x) );
  
  
***************
*** 1232,1236 ****
  	double cosx = cos(angle) * lineDist;
  	double siny = sin(angle) * lineDist;
! 	QPoint pointM(mx + cosx, my + siny);
  	//find dist between P(xb, yb)
  	distX = (tx - xb);
--- 1232,1236 ----
  	double cosx = cos(angle) * lineDist;
  	double siny = sin(angle) * lineDist;
! 	QPoint pointM(int( mx + cosx), int(my + siny) );
  	//find dist between P(xb, yb)
  	distX = (tx - xb);
***************
*** 1242,1246 ****
  	cosx = cos(angle) * lineDist;
  	siny = sin(angle) * lineDist;
! 	QPoint pointT(tx + cosx, ty + siny);
  	p -> drawLine(pointM.x(), pointM.y(), pointT.x(), pointT.y());
  	//now draw arrow head
--- 1242,1246 ----
  	cosx = cos(angle) * lineDist;
  	siny = sin(angle) * lineDist;
! 	QPoint pointT(int(tx + cosx), int(ty + siny) );
  	p -> drawLine(pointM.x(), pointM.y(), pointT.x(), pointT.y());
  	//now draw arrow head
***************
*** 1250,1258 ****
  	cosx = ( cos(arrowSlope) ) * arrowDist;
  	siny = ( sin(arrowSlope) ) * arrowDist;
! 	p -> drawLine(pointT.x(), pointT.y(), pointT.x() - cosx, pointT.y() - siny);
  	arrowSlope = angle - ATAN;
  	cosx = ( cos(arrowSlope)  ) * arrowDist;
  	siny = ( sin(arrowSlope) ) * arrowDist;
! 	p -> drawLine(pointT.x(), pointT.y(), pointT.x() - cosx, pointT.y() - siny);
  }
  
--- 1250,1258 ----
  	cosx = ( cos(arrowSlope) ) * arrowDist;
  	siny = ( sin(arrowSlope) ) * arrowDist;
! 	p -> drawLine(pointT.x(), pointT.y(), int(pointT.x() - cosx), int(pointT.y() - siny));
  	arrowSlope = angle - ATAN;
  	cosx = ( cos(arrowSlope)  ) * arrowDist;
  	siny = ( sin(arrowSlope) ) * arrowDist;
! 	p -> drawLine(pointT.x(), pointT.y(), int(pointT.x() - cosx), int(pointT.y() - siny));
  }
  
diff -C 2 -r uml-1.0.3.orig/uml/widgetassoccontainer.cpp uml-1.0.3.new/uml/widgetassoccontainer.cpp
*** uml-1.0.3.orig/uml/widgetassoccontainer.cpp	Mon Sep 17 05:47:57 2001
--- uml-1.0.3.new/uml/widgetassoccontainer.cpp	Tue Oct  9 16:50:57 2001
***************
*** 242,249 ****
     	   int totalCount = temp -> getTotalCount();
      	  	float countOffset = (float)count / (float)(totalCount + 1);
!     	 	int xa = view -> childX(wA) + wA -> width() * countOffset;
!       	int xb = view -> childX(wB) + wB -> width() * countOffset;	
!       	int ya = view -> childY(wA) + wA -> height() * countOffset;
!       	int yb = view -> childY(wB) + wB -> height() * countOffset;
        	QPoint pointA, pointB;
        	if(wA -> getBaseType() == NOTE)
--- 242,249 ----
     	   int totalCount = temp -> getTotalCount();
      	  	float countOffset = (float)count / (float)(totalCount + 1);
!     	 	int xa = int(view -> childX(wA) + wA -> width() * countOffset);
! 			int xb = int(view -> childX(wB) + wB -> width() * countOffset);	
!       	int ya = int(view -> childY(wA) + wA -> height() * countOffset);
!       	int yb = int(view -> childY(wB) + wB -> height() * countOffset);
        	QPoint pointA, pointB;
        	if(wA -> getBaseType() == NOTE)
