Example #1
0
void CEnvelopeWizard::AddDroppedGraphic(int nDragImage, POINT point)
{
	if (!m_pEnvelopeDoc)
		return;

	CAGPage* pPage = m_pEnvelopeDoc->GetPage(0);
	if (!pPage)
		return;

	CAGLayer* pUserLayer = pPage->GetUserLayer();
	if (!pUserLayer)
		return;

	CAGSymImage* pImage = m_pGraphics[nDragImage];
	if (!pImage)
		return;

	CAGSymImage* pNewImage = (CAGSymImage*)pImage->Duplicate();
	if (!pNewImage)
		return;

	SetImageSize(pNewImage, &point);
	
	pUserLayer->AddSymbol(pNewImage);
	GetDocWin()->SymbolUnselect(true);
	GetDocWin()->SymbolSelect(pNewImage);
	GetDocWin()->SymbolInvalidate(pNewImage);
}
Example #2
0
bool CXMLDlg::AddImage(HGLOBAL hMemory, bool bIsDIB, CAGPage* pPage, RECT* pDestRect)
{
	if (!pPage || !pDestRect)
	{
		ASSERT(false);
		return false;
	}

	RECT MaxBounds = {0,0,0,0};
	SIZE PageSize = {0,0};
	pPage->GetPageSize(PageSize);
	::SetRect(&MaxBounds, 0, 0, PageSize.cx, PageSize.cy);

	CAGSym* pSym = NULL;
	if (bIsDIB)
	{
		char* pMemory = (char*)::GlobalLock(hMemory);
		if (!pMemory)
			return false;

		// do we have a bitmap file header preceding the DIB?
		BITMAPFILEHEADER* pBMPFile = (BITMAPFILEHEADER*)pMemory;
		#define BFT_BITMAP	0x4d42	/* 'BM' */
		if (pBMPFile->bfType == BFT_BITMAP)
			pMemory += sizeof(BITMAPFILEHEADER);

		BITMAPINFOHEADER* pDIB = (BITMAPINFOHEADER*)pMemory;
		if (pDIB->biCompression == BI_RGB)
		{
			CAGSymImage* pSymImage = new CAGSymImage(pDIB, MaxBounds);
			pSym = pSymImage;
		}

		::GlobalUnlock(hMemory);
	}
	else
	{
		CAGSymImage* pSymImage = new CAGSymImage(hMemory, MaxBounds);
		pSym = pSymImage;
	}

	if (!pSym)
	{
		ASSERT(false);
		return false;
	}
		
	pSym->SetDestRect(*pDestRect);

	CAGLayer* pActiveLayer = pPage->GetActiveLayer();
	if (pActiveLayer)
		pActiveLayer->AddSymbol(pSym);
	else
		ASSERT(false);

	return true;
}
Example #3
0
void CEnvelopeWizard::CreateEnvelope(CAGDoc** ppAGDoc)
{
	m_pEnvelopeDoc = new CAGDoc();

	// Let the caller take control over this document
	if (ppAGDoc)
		*ppAGDoc = m_pEnvelopeDoc;
	if (!m_pEnvelopeDoc)
		return;
	
	m_pEnvelopeDoc->SetPortrait(m_PageSize.cx <= m_PageSize.cy);
	m_pEnvelopeDoc->SetDocType(DOC_ENVELOPE);
	m_pEnvelopeDoc->SetFileName(CString("Untitled"));
	m_pEnvelopeDoc->SetModified(true);

	CAGPage* pPage = new CAGPage(m_PageSize.cx, m_PageSize.cy);
	if (!pPage)
		return;

	m_pEnvelopeDoc->AddPage(pPage);

	int nLayers = 2;
	for (int j = 0; j < nLayers; j++)
		pPage->AddLayer(new CAGLayer());

	CAGLayer* pUserLayer = pPage->GetUserLayer();
	if (!pUserLayer)
		return;

	CAGLayer* pMasterLayer = pPage->GetMasterLayer();
	if (!pUserLayer)
		return;

	m_nMaxImageSize = m_PageSize.cy / 2;

	m_pEnvelopePicture->GetPictureList()->DrawListViewThumbnails();

	// Add the Background Item
	CAGSymGraphic* pBackground = new CAGSymRectangle();
	if (pBackground)
	{
		RECT BackgroundRect;
		::SetRect(&BackgroundRect, 0, 0, m_PageSize.cx, m_PageSize.cy);
		pBackground->SetDestRect(BackgroundRect);
		pBackground->SetID(IDR_ENVELOPE_BACKGROUND);
		pBackground->SetFillColor(RGB(240,240,255));
		pBackground->SetFillColor2(RGB(255,255,255));
		pBackground->SetFillType(FT_Solid);
		pBackground->SetHidden(true);
		pUserLayer->AddSymbol(pBackground);
	}

	int xCenter = m_PageSize.cx / 2;
	int yCenter = m_PageSize.cy / 2;
	RECT rMargins = { INCHES(0.375), INCHES(0.375), m_PageSize.cx - INCHES(0.375), m_PageSize.cy - INCHES(0.375)};

	// Add the Send Address Text Item
	CAGSymText* pSendAddr = new CAGSymText(ST_TEXT);
	if (pSendAddr)
	{
		RECT SendRect;
		SendRect.left   = xCenter - (INCHES(1.75)/2);
		SendRect.top    = yCenter - (INCHES(1)/2);
		SendRect.right  = SendRect.left + INCHES(3.0);
		SendRect.bottom = SendRect.top + INCHES(1.1);
		pSendAddr->Create(SendRect);

		pSendAddr->SetID(IDR_ENVELOPE_SEND);
		SetAddressText(pSendAddr, m_strSendAddress);
		pSendAddr->SelectAll(false);
		pSendAddr->SetHorzJust(eFlushLeft);
		pSendAddr->SetVertJust(eVertTop);
		pSendAddr->SetEmphasis(false, false, false);
		pUserLayer->AddSymbol(pSendAddr);
	}

	// Add the Return Address Text Item
	CAGSymText* pReturnAddr = new CAGSymText(ST_TEXT);
	if (pReturnAddr)
	{
		RECT ReturnRect;
		ReturnRect.left   = rMargins.left;
		ReturnRect.top    = rMargins.top;
		ReturnRect.right  = ReturnRect.left + INCHES(3.0);
		ReturnRect.bottom = ReturnRect.top + INCHES(1.1);
		pReturnAddr->Create(ReturnRect);

		pReturnAddr->SetID(IDR_ENVELOPE_RETURN);
		SetAddressText(pReturnAddr, m_strReturnAddress);
		pReturnAddr->SelectAll(false);
		pReturnAddr->SetHorzJust(eFlushLeft);
		pReturnAddr->SetVertJust(eVertTop);
		pReturnAddr->SetEmphasis(false, false, false);
		pUserLayer->AddSymbol(pReturnAddr);
	}

	// Add the first image to the document
	CAGSymImage* pImage = m_pGraphics[0];
	if (!pImage)
		return;

	CAGSymImage* pNewImage = (CAGSymImage*)pImage->Duplicate();
	if (!pNewImage)
		return;

	SetImageSize(pNewImage);

	pNewImage->SetID(IDC_ENVELOPE_PIC_0);

	pUserLayer->AddSymbol(pNewImage);
	GetDocWin()->SymbolUnselect(true);
	GetDocWin()->SymbolSelect(pNewImage);
	GetDocWin()->Position(POS_LEFT, POS_BOTTOM, 0/*id*/);
}
Example #4
0
void CXMLDlg::CreateGraphicItem(HTREEITEM pItem, CAGPage* pPage, POINT& ptOffset, CString& szParentItemType)
{
	HTREEITEM pChildItem = m_treeOutput.GetChildItem(pItem);
	if (!pChildItem)
	{
		ASSERT(false);
		return;
	}

	COLORREF LineColor = RGB(0,0,0);
	int iLineWidth = LT_None;
	FillType tFillType = FT_None;
	COLORREF FillColor = RGB(0,0,0);
	COLORREF FillColor2 = RGB(0,0,0);
	LineStart tStart = LS_LeftTop;

	POINT* pPoints = new POINT[5000];
	int nPoints = 0;

	CRect DestRect;
	double fAngle = 0.0;
	while (pChildItem)
	{
		CString szItemType = m_treeOutput.GetItemText(pChildItem);
		if (!szItemType.CompareNoCase(_T("pt")) )
		{
			POINT Location = {0,0};
			GetCurrentObjectLocation(pChildItem, Location);
			pPoints[nPoints++] = Location;
		}
		else
		{
			CString szTitle;
			CString szValue;
			Separate(m_treeOutput.GetItemText(pChildItem), szTitle, szValue);

			if (!szTitle.CompareNoCase(_T("x")) )
			{
				DestRect.left = INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("y")) )
			{
				DestRect.top = INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("dx")) )
			{
				DestRect.right = DestRect.left + INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("dy")) )
			{
				DestRect.bottom = DestRect.top + INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("angle")) )
			{
				fAngle = atof(szValue);
			}
			else
			if (!szTitle.CompareNoCase(_T("filltype")) )
			{
				if (!szValue.CompareNoCase(_T("Solid")))
					tFillType = FT_Solid;
				else
				if (!szValue.CompareNoCase(_T("SweepRight")))
					tFillType = FT_SweepRight;
				else
				if (!szValue.CompareNoCase(_T("SweepDown")))
					tFillType = FT_SweepDown;
				else
				if (!szValue.CompareNoCase(_T("RadialCenter")))
					tFillType = FT_RadialCenter;
				else
				if (!szValue.CompareNoCase(_T("RadialCorner")))
					tFillType = FT_RadialCorner;
			}
			else
			if (!szTitle.CompareNoCase(_T("fillcolor")) )
			{
				FillColor = ParseColor(szValue);
			}
			else
			if (!szTitle.CompareNoCase(_T("fillblendcolor")) )
			{
				FillColor2 = ParseColor(szValue);
			}
			else
			if (!szTitle.CompareNoCase(_T("linetype")) )
			{
				if (!szValue.CompareNoCase(_T("Hairline")))
					iLineWidth = LT_Hairline;
				else
				if (!szValue.CompareNoCase(_T("Normal")))
					iLineWidth = POINTUNITS(1);
			}
			else
			if (!szTitle.CompareNoCase(_T("linecolor")) )
			{
				LineColor = ParseColor(szValue);
			}
			else
			if (!szTitle.CompareNoCase(_T("linewidth")) )
			{
				iLineWidth = POINTUNITS(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("start")) )
			{
				if (!szValue.CompareNoCase(_T("UpperLeft")))
					tStart = LS_LeftTop;
				else
				if (!szValue.CompareNoCase(_T("UpperRight")))
					tStart = LS_RightTop;
				else
				if (!szValue.CompareNoCase(_T("LowerRight")))
					tStart = LS_RightBottom;
				else
				if (!szValue.CompareNoCase(_T("LowerLeft")))
					tStart = LS_LeftBottom;
			}
		}

		pChildItem = m_treeOutput.GetNextItem(pChildItem, TVGN_NEXT);
	}	

	CAGSymGraphic* pSym = NULL;

	if (!szParentItemType.CompareNoCase(_T("rectangle")))
	{
		CAGSymRectangle* pSym1 = new CAGSymRectangle();
		pSym = pSym1;
	}
	else
	if (!szParentItemType.CompareNoCase(_T("ellipse")))
	{
		CAGSymEllipse* pSym1 = new CAGSymEllipse();
		pSym = pSym1;
	}
	else
	if (!szParentItemType.CompareNoCase(_T("drawing")))
	{
		CAGSymDrawing* pSym1 = new CAGSymDrawing();

		// Due to a conversion bug, flip the y value of each point within the drawing
		int iOffset = DestRect.bottom + DestRect.top;
		for (int i = 0; i < nPoints; i++)
			pPoints[i].y = iOffset - pPoints[i].y;

		pSym1->SetPoints(pPoints, nPoints);
		pSym = pSym1;
	}
	else
	if (!szParentItemType.CompareNoCase(_T("line")))
	{
		CAGSymLine* pSym1 = new CAGSymLine();

		pSym1->SetLineStart(tStart);
		pSym = pSym1;
	}
	else
	if (!szParentItemType.CompareNoCase(_T("border")))
	{
		CAGSymRectangle* pSym1 = new CAGSymRectangle();
		pSym = pSym1;
		// Ignore everything because the data is bad; make it a black, 5 point, unfilled rectangle
		LineColor = RGB(0,0,0);
		iLineWidth = POINTUNITS(5);
		tFillType = FT_None;
		FillColor = RGB(0,0,0);
		FillColor2 = RGB(0,0,0);
	}
	else
	if (!szParentItemType.CompareNoCase(_T("hyperlink")))
	{
	}

	delete [] pPoints;

	if (!pSym)
	{
		ASSERT(false);
		return;
	}

	DestRect.OffsetRect(-ptOffset.x, -ptOffset.y);

	pSym->SetLineColor(LineColor);
	pSym->SetLineWidth(iLineWidth);

	pSym->SetFillType(tFillType);
	pSym->SetFillColor(FillColor);
	pSym->SetFillColor2(FillColor2);

	pSym->SetDestRect(DestRect);
	if (fAngle)
	{
		CAGMatrix Matrix;
		Matrix.Rotate(-fAngle, -fAngle, ((DestRect.left + DestRect.right) / 2), ((DestRect.top + DestRect.bottom) / 2));
		pSym->SetMatrix(Matrix);
	}

	CAGLayer* pActiveLayer = pPage->GetActiveLayer();
	if (pActiveLayer)
		pActiveLayer->AddSymbol(pSym);
}
Example #5
0
void CXMLDlg::CreateTextItem(HTREEITEM pItem, CAGPage* pPage, POINT& ptOffset)
{
	HTREEITEM pChildItem = m_treeOutput.GetChildItem(pItem);
	if (!pChildItem)
	{
		ASSERT(false);
		return;
	}

	// Initialize the text properties: Color, Valign, HAlign, Angle, Font
	COLORREF Color = RGB(0,0,0);
	eTSJustTypes HAlignment = eRagCentered;
	eVertJust VAlignment = eVertTop;
	LOGFONT Font;
	memset(&Font, 0, sizeof(Font));
	Font.lfWeight = FW_NORMAL;
	Font.lfCharSet = ANSI_CHARSET; //j DEFAULT_CHARSET
	Font.lfItalic = false;
	Font.lfUnderline = false;
	Font.lfStrikeOut = false;
	lstrcpy(Font.lfFaceName, "Arial");
	Font.lfHeight = -POINTUNITS(14);

	#define MAX_SPECS 1000
	int pCharOffsets[MAX_SPECS];
	CAGSpec* pSpecs[MAX_SPECS];
	int nSpecs = 0;

	char* pTextBuffer = new char[10000];
	if (!pTextBuffer)
	{
		ASSERT(false);
		return;
	}
	*pTextBuffer = '\0';

	CRect DestRect;
	double fAngle = 0.0;
	while (pChildItem)
	{
		CString szItemType = m_treeOutput.GetItemText(pChildItem);
		if (!szItemType.CompareNoCase(_T("style")) )
		{
			int iOffset = lstrlen(pTextBuffer);
			CAGSpec* pSpec = HandleAddText(pChildItem, Font, Color, HAlignment, (BYTE*)pTextBuffer + iOffset);
			if (pSpec)
			{
				pSpecs[nSpecs] = pSpec;
				pCharOffsets[nSpecs] = iOffset;
				nSpecs++;
			}
		}
		else
		{
			CString szTitle;
			CString szValue;
			Separate(m_treeOutput.GetItemText(pChildItem), szTitle, szValue);

			if (!szTitle.CompareNoCase(_T("x")) )
			{
				DestRect.left = INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("y")) )
			{
				DestRect.top = INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("dx")) )
			{
				DestRect.right = DestRect.left + INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("dy")) )
			{
				DestRect.bottom = DestRect.top + INCHES(atof(szValue));
			}
			else
			if (!szTitle.CompareNoCase(_T("angle")) )
			{
				fAngle = atof(szValue);
			}
			else
			if (!szTitle.CompareNoCase(_T("valign")) )
			{
				if (!szValue.CompareNoCase(_T("Top")))
					VAlignment = eVertTop;
				else
				if (!szValue.CompareNoCase(_T("Middle")))
					VAlignment = eVertCentered;
				else
				if (!szValue.CompareNoCase(_T("Bottom")))
					VAlignment = eVertBottom;

			}
		}
		
		pChildItem = m_treeOutput.GetNextItem(pChildItem, TVGN_NEXT);
	}
	
	if (!nSpecs)
	{
		delete [] pTextBuffer;
		return;
	}

	DestRect.OffsetRect(-ptOffset.x, -ptOffset.y);

	CAGSymText* pText = new CAGSymText(ST_TEXT);
	if (pText)
	{
		pText->Create(DestRect);
		pText->SetVertJust(VAlignment);
		if (fAngle)
		{
			CAGMatrix Matrix;
			Matrix.Rotate(-fAngle, -fAngle, ((DestRect.left + DestRect.right) / 2), ((DestRect.top + DestRect.bottom) / 2));
			pText->SetMatrix(Matrix);
		}

		// Set the text and specs
		pText->SetText(pTextBuffer, nSpecs, pSpecs, pCharOffsets);

		// Add the text symbol to the page/layer
		CAGLayer* pActiveLayer = pPage->GetActiveLayer();
		if (pActiveLayer)
			pActiveLayer->AddSymbol(pText);	
	}
	else
		ASSERT(false);

	delete [] pTextBuffer;
}