Example #1
0
irr::video::ITexture*	CSkinUnitODL::GetTextureData()
{
	Gdiplus::BitmapData data;
	auto uLen = GetSkinWidth()+GetGroutX();
	auto vLen = GetSkinHeight()+GetGroutY();
	Gdiplus::Rect rect(0,0, static_cast<int>(uLen), static_cast<int>(vLen));
	GetBitmapData(&rect, Gdiplus::ImageLockModeRead, PixelFormat32bppARGB, data);

	irr::core::dimension2du texSize(data.Width, data.Height);
	auto img = IrrEngine::GetInstance()->GetDevice()->getVideoDriver()->createImageFromData(irr::video::ECF_A8R8G8B8, texSize, data.Scan0, false, false);

	auto addr = reinterpret_cast<int>(data.Scan0);
	auto tex = IrrEngine::GetInstance()->GetDevice()->getVideoDriver()->addTexture(std::to_string(addr).c_str(), img);
	img->drop();
	ReleaseBitmapData(data);

	return tex;
}
Example #2
0
void
BitmapSource::Invalidate ()
{
	if (GetPixelWidth () == 0 || GetPixelHeight () == 0)
		return;

	if (native_surface) {
		cairo_surface_destroy (native_surface);
		native_surface = NULL;
	}
	if (image_surface)
		cairo_surface_destroy (image_surface);

	image_surface = cairo_image_surface_create_for_data ((unsigned char *) GetBitmapData (), CAIRO_FORMAT_ARGB32, 
		GetPixelWidth (), GetPixelHeight (), GetPixelWidth () * 4);

	Emit (BitmapSource::PixelDataChangedEvent);
}
Example #3
0
gpointer
WriteableBitmap::InitializeFromBitmapSource (BitmapSource *source)
{
	cairo_t *cr;

	if (!source)
		return NULL;

	SetPixelHeight (source->GetPixelHeight ());
	SetPixelWidth (source->GetPixelWidth ());

	image_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, GetPixelWidth (), GetPixelHeight ());
	cr = cairo_create (image_surface);
	cairo_set_source_surface (cr, source->GetImageSurface (), 0, 0);
	cairo_paint (cr);
	cairo_destroy (cr);

	SetBitmapData (cairo_image_surface_get_data (image_surface), false);

	return GetBitmapData ();
}
void CBsplineView::OnGen() 
{
	// TODO: Add your command handler code here
	CBsplineDoc* pDoc = GetDocument();
	Gdiplus::BitmapData m_TempBitmapData;
	GetBitmapData(m_TempBitmapData,pDoc->m_pOrignImageS);
	if (pDoc->m_Gui)
	{
		delete pDoc->m_Gui;
	}

	
	pDoc->m_Gui=new CPupilGUI((BYTE*)m_TempBitmapData.Scan0, m_TempBitmapData.Width, m_TempBitmapData.Height);
/*
	pDoc->m_LipContour_left=new CLipContour((BYTE*)m_TempBitmapData.Scan0, m_TempBitmapData.Width, m_TempBitmapData.Height,true);
	pDoc->m_LipContour_right=new CLipContour((BYTE*)m_TempBitmapData.Scan0, m_TempBitmapData.Width, m_TempBitmapData.Height,false);*/
	
	pDoc->m_pOrignImageS->UnlockBits(&m_TempBitmapData);

/*
	if (m_controlpoint.size()<2)
	{   
		MessageBox("请输入两个以上的控制顶点");
		return;
	}
	int i;
	CDC*pDC=GetDC();
	CPen pen1;
	CPen *oldPen;
	pen1.CreatePen(PS_DASH,1,RGB(0,0,255));//创建对象
	oldPen = pDC->SelectObject(&pen1);//将画笔选入设备描述表,并保存旧的画笔
		for (i=0;i<m_controlpoint.size()-1;i++)
	{   
		pDC->MoveTo(m_controlpoint[i][0],m_controlpoint[i][1]);
		pDC->LineTo(m_controlpoint[i+1][0],m_controlpoint[i+1][1]);
	}
	CPen pen2;
	pen2.CreatePen(PS_DASH,3,RGB(0,0,255));//创建对象
	pDC->SelectObject(&pen2);//将画笔选入设备描述表,并保存旧的画笔



   	CLibsvm csvm;
	csvm.TrainModel(m_controlpoint);

	float minx=1e10;
	float maxx=0;
	for (int i=0;i<m_controlpoint.size();i++)
	{
		if (m_controlpoint[i][0]<minx)
		{
			minx=m_controlpoint[i][0];
		}
		if (m_controlpoint[i][0]>maxx)
		{
			maxx=m_controlpoint[i][0];
		}
	}
	m_resultcurve.clear();
	for (int i=minx;i<maxx;i++)
	{
		float y=0;
		csvm.Predict(i,y);
		m_resultcurve.push_back(vec2(i,y));
	}*/


/*
	bcurve.Computeinterpolation();
   for(i=0;i<bcurve.m_interpolationnode.size()-1;i++)
   {
	   pDC->MoveTo(bcurve.m_interpolationnode[i][0],bcurve.m_interpolationnode[i][1]);
		   pDC->LineTo(bcurve.m_interpolationnode[i+1][0],bcurve.m_interpolationnode[i+1][1]);
   }*/
	Invalidate();
	//pDC->SelectObject(oldPen);
  
	
}
Example #5
0
	std::pair<BYTE*, UINT> Picture::GetAllData()
	{
		auto size = GetPixels();
		WICRect rect = { 0,0,static_cast<INT>(size.first),static_cast<INT>(size.second) };
		return GetBitmapData(rect);
	}