示例#1
0
void MyDrawString(/*short dir,*/ short h, short v, char *s,Boolean framed,short selectMode)
{
	Rect r;
	if(sharedPrinting)selectMode = POINTDRAWFLAG;
	if(strlen(s) >0)
	{
		GetTextOffsets(/*dir,*/s,&h,&v);
		GetStringRect(s,h,v,&r);
		if(selectMode == BADPOINTDRAWFLAG)selectMode = POINTDRAWFLAG;
		if(selectMode == POINTDRAWFLAG)
		{
			EraseRect(&r);
			MyMoveTo(h,v);
			drawstring(s);
		}
		if(framed)
		{		
			
			if(selectMode != POINTDRAWFLAG)
			{
				PenMode(patXor);PaintRect(&r);
			}
			PenMode(patCopy);
			MyFrameRect(&r);
		}
	}
}
示例#2
0
void VectDraw(DialogPtr d, Rect *rectPtr, long itemNumber)
{
#pragma unused (rectPtr)
	Point		p;
	short		h,v;
	RGBColor	rgb;
	Rect		rgbrect;
	char 		numstr[30],numstr2[30];
	double 		x  = (*gEditContourLevels)[itemNumber];
	float		colorLevel;
	long		numLevels = GetNumDoubleHdlItems(gEditContourLevels);
	
	SetRGBColor(&rgb,0,0,0);

	TextFont(kFontIDGeneva); TextSize(LISTTEXTSIZE);
	
	rgbrect=GetDialogItemBox(d,CONT_LISTID);
	h=(rgbrect.left);
	GetPen(&p);
	v=p.v;

	MySetRect(&rgbrect,h+4,v-9,h+14,v+1);
	
	// set unique color for each value, not on linear scale
	colorLevel = float(itemNumber)/float(numLevels-1);
	//rgb = GetRGBColor(colorLevel);
#ifdef IBM
	rgb = GetRGBColor(colorLevel);
#else
	rgb = GetRGBColor(1.-colorLevel);
#endif
	//rgb = GetRGBColor(0.8-colorLevel);
	RGBForeColor(&rgb);
	PaintRect(&rgbrect);
	MyFrameRect(&rgbrect);

	MyMoveTo(h+30,v+1);

	RGBForeColor(&colors[BLACK]);
	if (itemNumber<numLevels-1)
	{
		MyNumToStr(x,numstr);
		MyNumToStr((*gEditContourLevels)[itemNumber+1],numstr2);
		strcat(numstr," - ");
		strcat(numstr,numstr2);
	}
	else
	{
		strcpy(numstr,"> ");
		MyNumToStr(x,numstr2);
		strcat(numstr,numstr2);
	}
	if (gContourType==0)
	{
		strcat(numstr,"    mg/L");
	}
	else
	{
		MyNumToStr(x,numstr);
		strcat(numstr,"    m");
	}
	//drawstring(MyNumToStr(x,numstr));
	drawstring(numstr);
 
	return;
}
示例#3
0
short DrawBullet(ListItem item, RECTPTR r, Boolean draw, RECTPTR box)
{
	Rect b;
	Rect frame;
	PicHandle p = nil;
	
#ifdef MAC
	MySetRect(&b, 5 + item.indent * 12,
				  r->top + 4,
				  5 + item.indent * 12 + 6,
				  r->bottom - 4);
#else
	MySetRect(&b, 7 + item.indent * 12,
				  r->top + 4, 
				  7 + item.indent * 12 + 6,
				  r->bottom - 5);  
#endif

	if (draw) {
		PenNormal();
		RGBForeColor(&colors[BLACK]);
		switch (item.bullet) {
			case BULLET_DASH:
				MyMoveTo(b.left, (b.top + b.bottom) / 2);
				MyLineTo(b.right, (b.top + b.bottom) / 2);
				break;
			case BULLET_EMPTYBOX:
				b.left+=1;b.right+=1;
#ifdef MAC
				p = GetPicture (EMPTYBOXPICT);
				if (!p) { SysBeep(1);break; }

				//frame = (**p).picFrame;
				frame = GetPICTFrame(p);
				MyOffsetRect(&frame, b.left, b.top);
				DrawPicture(p, &frame);
#else
				MyFrameRect(&b);
#endif
				b.left-=1;b.right-=1;
				break;
			case BULLET_FILLEDBOX:
				b.left+=1;b.right+=1;
#ifdef MAC
				p = GetPicture (FILLEDBOXPICT);
				if (!p) { SysBeep(1);break; }

				//frame = (**p).picFrame;
				frame = GetPICTFrame(p);
				MyOffsetRect(&frame, b.left, b.top);
				DrawPicture(p, &frame);
#else
				PaintRect(&b);
#endif
				
			//	MyFrameRect(&b);
			//	MyMoveTo(b.left,b.top);
			//	MyLineTo(b.right-1,b.bottom-1);
			//	MyMoveTo(b.right-1,b.top);
			//	MyLineTo(b.left,b.bottom-1);
				
				b.left-=1;b.right-=1;
				break;
			case BULLET_OPENTRIANGLE:
			case BULLET_CLOSEDTRIANGLE:
				DrawTriangle(b, item.bullet);
				break;
		}
	}

	if (box)
		(*box) = b;
		
	// line up the text with an indented bullet
	b.right += 3;	// mac tweek by sohail
	
	return b.right;
}
示例#4
0
void DrawObject (ObjectRecHdl theObjectHdl, CMap *Map, LongRect *UpdateLRectPtr,
				 DrawSpecRecPtr drawSettings)
{
	OSType		thisObjectType;
	RGBColor	SaveColor;

	GetForeColor (&SaveColor);		// save original forecolor

	GetObjectType (theObjectHdl, &thisObjectType);
	switch (thisObjectType)
	{
		case kPolyType:
			DrawMapPoly (Map, (PolyObjectHdl) theObjectHdl, drawSettings);
		break;

		case kBeachedLEType:
			DrawBeachLEs (Map, (PolyObjectHdl) theObjectHdl, drawSettings);
		break;

		case kRectType:
		{
			Rect	ObjectRect;

			GetObjectScrRect (Map, theObjectHdl, &ObjectRect);
			MyOffsetRect (&ObjectRect, drawSettings -> offsetDx, drawSettings -> offsetDy);

			if (drawSettings -> fillCode == kPaintFillCode)
			{
				if (drawSettings -> backColorInd > 0)
				{
					Our_PmForeColor (drawSettings -> backColorInd);
					PaintRect (&ObjectRect);
				}
			}
			else if (drawSettings -> fillCode == kPatFillCode)
			{
#ifdef MAC
				PenPat (&drawSettings -> backPattern);
#else
				SetPenPat (drawSettings -> backPattern);
#endif
				PaintRect (&ObjectRect);
			}

			if (drawSettings -> frameCode == kPatFrameCode)
#ifdef MAC
				PenPat (&drawSettings -> forePattern);
#else
				SetPenPat (drawSettings -> forePattern);
#endif

			Our_PmForeColor (drawSettings -> foreColorInd);
			MyFrameRect (&ObjectRect);
		}
		break;

		case kTextType:
		{
			Rect		ObjectRect;

			GetObjectScrRect (Map, theObjectHdl, &ObjectRect);
			MyOffsetRect (&ObjectRect, drawSettings -> offsetDx, drawSettings -> offsetDy);

			if (drawSettings -> fillCode == kPaintFillCode)
			{
				if (drawSettings -> backColorInd > 0)
				{
					Our_PmForeColor (drawSettings -> backColorInd);
					PaintRect (&ObjectRect);
				}
			}
			else if (drawSettings -> fillCode == kPatFillCode)
			{
#ifdef MAC
				PenPat (&drawSettings -> backPattern);
#else
				SetPenPat (drawSettings -> backPattern);
#endif
				PaintRect (&ObjectRect);
			}

			if (drawSettings -> frameCode == kPatFrameCode)
#ifdef MAC
				PenPat (&drawSettings -> forePattern);
#else
				SetPenPat (drawSettings -> forePattern);
#endif

			Our_PmForeColor (drawSettings -> foreColorInd);
//			DrawTextObject ((TextObjectRecHdl) theObjectHdl, Map, UpdateLRectPtr, drawSettings);
		}
		break;

		case kLineType:
		{
			LongRect			ObjectLRect;
			Rect				ObjectRect;
			LongPoint			LineStartLPoint, LineEndLPoint;
			Point				LineStartPoint, LineEndPoint;
			LineObjectRecHdl	lineObjectHdl;

			lineObjectHdl = (LineObjectRecHdl) theObjectHdl;

			LineStartLPoint = (**lineObjectHdl).lineStartLPoint;
			LineEndLPoint   = (**lineObjectHdl).lineEndLPoint;
			Map -> GetScrPoint (&LineStartLPoint, &LineStartPoint);
			Map -> GetScrPoint (&LineEndLPoint,   &LineEndPoint);
			LineStartPoint.h += drawSettings -> offsetDx;
			LineStartPoint.v += drawSettings -> offsetDy;
			LineEndPoint.h   += drawSettings -> offsetDx;
			LineEndPoint.v   += drawSettings -> offsetDy;

			if (drawSettings -> fillCode == kPatFillCode)
#ifdef MAC
				PenPat (&drawSettings -> backPattern);
#else
				SetPenPat (drawSettings -> backPattern);
#endif
			else if (drawSettings -> frameCode == kPatFrameCode)
#ifdef MAC
				PenPat (&drawSettings -> forePattern);
#else
				SetPenPat (drawSettings -> forePattern);
#endif

			Our_PmForeColor (drawSettings -> foreColorInd);
			MyMoveTo (LineStartPoint.h,  LineStartPoint.v);
			MyLineTo (LineEndPoint.h, LineEndPoint.v);
		}
		break;
	}
示例#5
0
// Draws a marker at the current point, if a marker should be drawn there
void	CXYChart::DrawMarker( CDC *pDC, CPoint point, int whichDataSet, int dataPointNumber )
{
	CBrush		brush, *pOldBrush;
	CRect		rect;
	CPen		pen, *oldPen;
	CPoint		startPoint, startLocation;

	if( m_MarkerType[whichDataSet] == kXYMarkerNone ) return;

	// Check to see if we want to draw this marker
	if( m_MarkerFrequency[whichDataSet] > 0 )
	{
		// positive means every nth data point
		if( dataPointNumber % m_MarkerFrequency[whichDataSet] != 0 ) return;
	}
	else if( m_MarkerFrequency[whichDataSet] < 0 )
	{
		// negative means n number of times
		int			n_elements = (m_DataSets[whichDataSet]->GetDimensions())[1];
		int			remainder = n_elements / (int)(abs(m_MarkerFrequency[whichDataSet]));

		if( ((dataPointNumber+remainder/2+1) % (n_elements/abs(m_MarkerFrequency[whichDataSet])) != 0 ) )
			return;
	}
	else
		return; // == 0 means no marker

	startLocation = pDC->GetCurrentPosition();

	pen.CreatePen( PS_SOLID, 1, m_PlotColor[whichDataSet] );

	oldPen = pDC->SelectObject( &pen );

	rect.SetRect( point.x - m_MarkerSize[whichDataSet], point.y - m_MarkerSize[whichDataSet],
		point.x + m_MarkerSize[whichDataSet], point.y + m_MarkerSize[whichDataSet] );

	brush.CreateSolidBrush( m_PlotColor[whichDataSet] );

	pOldBrush = pDC->SelectObject( &brush );

	pDC->BeginPath();

	switch( m_MarkerType[whichDataSet] )
	{
	case kXYMarkerNone: return; break;
	case kXYMarkerCircle:
		// the size is the radius
		pDC->Arc( (LPCRECT)rect, point, point );
		break;
	case kXYMarkerSquare:
		MyFrameRect( pDC, rect );
		break;
	case kXYMarkerTriangle:
		// Need to update this to actually center correctly using
		// the triangle's geometry
		startPoint.x = point.x;
		startPoint.y = point.y - m_MarkerSize[whichDataSet];
		pDC->MoveTo( startPoint );
		startPoint.Offset( m_MarkerSize[whichDataSet], 2 * m_MarkerSize[whichDataSet] );
		pDC->LineTo( startPoint );
		startPoint.Offset( -2*m_MarkerSize[whichDataSet], 0 );
		pDC->LineTo( startPoint );
		startPoint.Offset( m_MarkerSize[whichDataSet], -2 * m_MarkerSize[whichDataSet] );
		pDC->LineTo( startPoint );
		pDC->MoveTo( point );
		break;
	case kXYMarkerX:
		startPoint.x = point.x - m_MarkerSize[whichDataSet];
		startPoint.y = point.y - m_MarkerSize[whichDataSet];
		pDC->MoveTo( startPoint );
		startPoint.Offset( 2*m_MarkerSize[whichDataSet], 2*m_MarkerSize[whichDataSet] );
		pDC->LineTo( startPoint );
		startPoint.Offset( -2*m_MarkerSize[whichDataSet], 0 );
		pDC->MoveTo( startPoint );
		startPoint.Offset( 2*m_MarkerSize[whichDataSet], -2*m_MarkerSize[whichDataSet] );
		pDC->LineTo( startPoint );

		// Move back to beginning
		pDC->MoveTo( point );
		break;

	}

	pDC->EndPath();

	if( m_MarkerFill[whichDataSet] )
		pDC->StrokeAndFillPath();
	else
		pDC->StrokePath();

	pDC->MoveTo( startLocation );
	pDC->SelectObject( oldPen );
	pDC->SelectObject( pOldBrush );
}