Example #1
0
//
//   FUNCTION: InitInstance(HANDLE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   RECT   rc ;
   ::GetWindowRect (hWnd, &rc) ;
   ::MoveWindow (hWnd, rc.left, rc.top, img.Width(), img.Height(), TRUE) ;
   HRGN   hRgn = FCWin32::ConvertAlphaImageToHRGN(img) ;
   ::SetWindowRgn (hWnd, hRgn, TRUE) ;

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}
Example #2
0
//********************************************************************************************************
void CBCStroke::Draw(FCObjImage& img,BYTE alpha,float zoompaper,float zoompress)
{
	//m_vb.BeginOneStrokeDraw(img.GetPaper());
	BEZIERSTROKE::iterator it;
	int w=img.Width();
	int h=img.Height();
	img.Stretch(w*3,h*3);
	for(it=m_bezStroke.begin();it!=m_bezStroke.end();++it){
		DrawBezierCurve(img,*it,alpha,zoompaper*3,zoompress*3);
	}
	img.AntiAliased_Zoom(3);
	//m_vb.EndOneStrokeDraw(img.GetPaper());
}
Example #3
0
//-------------------------------------------------------------------------------------
HBITMAP CMainFrame::CVistaMenuIcon::QueryIcon (UINT nID)
{
    std::map<UINT, FCObjImage*>::iterator   i = m_tab.find(nID) ;
    if (i != m_tab.end())
        return *i->second ;

    FCObjImage   * pImg = new FCObjImage ;
    pImg->LoadResource (nID, L"PNG", IMG_PNG) ;
    if (pImg->IsValidImage() && (pImg->ColorBits() == 32))
    {
        pImg->ApplyEffect (FCEffectPremultipleAlpha()) ;
    }
    m_tab[nID] = pImg ;
    return *pImg ;
}
Example #4
0
//-------------------------------------------------------------------------------------
bool DlgEffectBase::CProcessTask::OnProgressUpdate (int nFinishPercentage)
{
    if (!m_continue_process)
        return false ;

    nFinishPercentage = FClamp(nFinishPercentage, 0, 100) ;

    if (nFinishPercentage % 5)
        return true ; // span == 5
    if (m_nLastPercent == nFinishPercentage)
        return true ;

    FCObjImage   & img = m_pDlg->m_curr ;
    FCObjImage   * pLayer = m_pDlg->m_layer ;

    // update status
    m_nLastPercent = nFinishPercentage ;
    m_pDlg->PostMessage(WM_PHOXO_PROCESS_STEP, m_id) ;

    // update view every 20%
    if ((nFinishPercentage >= m_nLastUpdate+20) || (nFinishPercentage == 100))
    {
        int   nStart = img.Height() * m_nLastUpdate / 100 ;
        int   nEnd = img.Height() * nFinishPercentage / 100 ;
        if (nFinishPercentage == 100)
            nStart = 0 ;

        // update view
        for (int y=nStart ; y < nEnd ; y++)
        {
            for (int x=0 ; x < img.Width() ; x++)
            {
                *(RGBQUAD*)pLayer->GetBits(x,y) = *(RGBQUAD*)img.GetBits(x,y) ;
            }
        }

        m_pDlg->m_view->Invalidate() ;
        m_nLastUpdate = nFinishPercentage ;
    }
    return true ;
}
Example #5
0
//=================================================================================
// 画线基类/base class of drawline (32 bit)
void  CCmdImgDrawlineBase::Implement (FCObjImage & img, FCObjProgress * Percent)
{
	if (!img.IsValidImage() || (img.ColorBits() != 32))
		return ;
	m_nAlpha = FClamp0255 (m_nAlpha) ;

	// 制作大小一样的alpha位图,注意:位图数据初始化为0(也即黑色)
	FCObjImage		imgAlpha (img.Width(), img.Height(), 8) ;
	
	// draw lines
	
	this->DrawAlphaMask (imgAlpha) ;
	//imgAlpha.Save("D:\\a.bmp");
	// 制作纯色位图
	FCObjImage          imgCover (img.Width(), img.Height(), 32) ;
	FCPixelFillColor    cmdFillCr(m_cr) ;
	imgCover.SinglePixelProcessProc (cmdFillCr) ;
	
	imgCover.AppendAlphaChannel (imgAlpha) ;
	//imgCover.Save("D:\\te.bmp");
	img.CombineAlphaImg (imgCover) ;
	//img.Save("D:\\te.bmp");
}
Example #6
0
//-------------------------------------------------------------------------------------
void CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDIS)
{
    if (lpDIS && (lpDIS->CtlType == ODT_MENU))
    {
        FCObjImage   img ;
        img.LoadResource (lpDIS->itemID, L"PNG", IMG_PNG) ;
        if (img.IsValidImage())
        {
            if (lpDIS->itemState & ODS_DISABLED)
            {
                img.ApplyEffect (FCEffectGrayscale()) ;
            }

            std::auto_ptr<Gdiplus::Bitmap>   gb (img.CreateBitmap()) ;

            CRect   rc = FCObjGraph::CalcFitWindowSize (CSize(img.Width(),img.Height()), lpDIS->rcItem) ;
            Gdiplus::Graphics(lpDIS->hDC).DrawImage (gb.get(), rc.left, rc.top, rc.Width(), rc.Height()) ;
        }
        return ;
    }
    CMDIFrameWnd::OnDrawItem (nIDCtl, lpDIS) ;
}
Example #7
0
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    FCObjImage   imgAlpha ;
    FCWin32::LoadImageRes(imgAlpha, MAKEINTRESOURCE(IDR_RGNIMG), TEXT("TGA"), IMG_TGA) ;
    imgAlpha.SinglePixelProcessProc (FCPixelConvertTo8BitGray()) ;

    img.Create (imgAlpha.Width(), imgAlpha.Height(), 32) ;
    img.AppendAlphaChannel (imgAlpha) ;

 	// TODO: Place code here.
	MSG msg;
	HACCEL hAccelTable;

	// Initialize global strings
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_MY003, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// Perform application initialization:
	if (!InitInstance (hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY003);

	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msg.wParam;
}
Example #8
0
void CBCStroke::Draw(FCObjImage& img,float zoompaper,float zoompress)
{
	if(m_bezStroke.empty())
		return;
	FCObjImage imgBlock;
	RECT rcTmp;
	rcTmp.bottom=m_rcSave.bottom*zoompaper;
	rcTmp.left=m_rcSave.left*zoompaper;
	rcTmp.right=m_rcSave.right*zoompaper;
	rcTmp.top=m_rcSave.top*zoompaper;
	img.GetSubBlock (&imgBlock,rcTmp);
	
//	if(m_Undo.IsValidImage()==false)
//		m_Undo=imgBlock;
	// 制作大小一样的alpha位图,注意:位图数据初始化为0(也即黑色)
	FCObjImage		imgAlpha (imgBlock.Width(), imgBlock.Height(), 8) ;

	Draw(imgAlpha,255,zoompaper,zoompress);
	
	// 制作纯色位图
	FCObjImage          imgCover (imgBlock.Width(), imgBlock.Height(), 32) ;
	RGBQUAD c;
	c.rgbRed=GetRValue(m_c);
	c.rgbGreen=GetGValue(m_c);
	c.rgbBlue=GetBValue(m_c);
	FCPixelFillColor    cmdFillCr(c) ;
	imgCover.SinglePixelProcessProc (cmdFillCr) ;
	imgCover.AppendAlphaChannel (imgAlpha) ;

	imgBlock.CombineAlphaImg (imgCover);
	img.CoverBlock(imgBlock,rcTmp.left,rcTmp.top);
	//std::sort(
}