irr::video::ITexture* EffectHandler::generateRandomVectorTexture(const irr::core::dimension2du& dimensions,
        const irr::core::stringc& name)
{
    IImage* tmpImage = driver->createImage(irr::video::ECF_A8R8G8B8, dimensions);

    srand(device->getTimer()->getRealTime());

    for (u32 x = 0; x < dimensions.Width; ++x)
    {
        for (u32 y = 0; y < dimensions.Height; ++y)
        {
            vector3df randVec;

            // Reject vectors outside the unit sphere to get a uniform distribution.
            do
            {
                randVec = vector3df((f32)rand() / (f32)RAND_MAX, (f32)rand() / (f32)RAND_MAX, (f32)rand() / (f32)RAND_MAX);
            }
            while (randVec.getLengthSQ() > 1.0f);

            const SColorf randCol(randVec.X, randVec.Y, randVec.Z);
            tmpImage->setPixel(x, y, randCol.toSColor());
        }
    }

    ITexture* randTexture = driver->addTexture(name, tmpImage);

    tmpImage->drop();

    return randTexture;
}
Example #2
0
// ----------------------------------------------------------------------------
CMeshBuffer<S3DVertex2TCoords>* Terrain::build(path p)
{
    IrrlichtDevice* device = Editor::getEditor()->getDevice();

    CMeshBuffer<S3DVertex2TCoords>* mb = new CMeshBuffer<S3DVertex2TCoords>();

    mb->Vertices.reallocate(m_mesh.vertex_count);
    mb->Indices.reallocate(m_mesh.quad_count * 6);

    for (u32 i = 0; i < m_mesh.vertex_count; i++)
        mb->Vertices.push_back(m_mesh.vertices[i]);
    for (u32 i = 0; i < m_mesh.quad_count * 6; i++)
        mb->Indices.push_back(m_mesh.indices[i]);

    mb->recalculateBoundingBox();
    mb->Material = m_material;

    ITexture* texture = m_material.getTexture(1);
    IImage* image = device->getVideoDriver()->createImage(texture, position2di(0, 0),
        texture->getSize());
    stringc name = p + "/splatt.png";
    device->getVideoDriver()->writeImageToFile(image, name.c_str());
    image->drop();

    return mb;

} // build
Example #3
0
static BOOL drawImage(HDC hDC, LPCTSTR lpszFileName)
{
	IImagingFactory* pImageFactory = NULL;
	BOOL bRet = FALSE;

	if (SUCCEEDED(CoCreateInstance(CLSID_ImagingFactory,
		0, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void**)&pImageFactory)))
	{
		IImage* pImage = NULL;
		ImageInfo imageInfo;

		if (SUCCEEDED(pImageFactory->CreateImageFromFile(lpszFileName, &pImage))
			&& SUCCEEDED(pImage->GetImageInfo(&imageInfo)))
		{
			RECT rect = {0, 0, imageInfo.Width, imageInfo.Height};
			pImage->Draw(hDC, &rect, 0);
			pImage->Release();
			bRet = TRUE;
		}

		pImageFactory->Release();
	}

	return bRet;
}
static PyObject *
image_set_offset(PyObject *self, PyObject *args)
{
    int x, y;
    PyObject *pyim;

    if(!PyArg_ParseTuple(args,"Oii",&pyim,&x,&y))
    { 
	return NULL;
    }

    IImage *i = (IImage *)PyCObject_AsVoidPtr(pyim);
    if(NULL == i)
    {
	return NULL;
    }

    bool ok = i->set_offset(x,y);
    if(!ok)
    {
	PyErr_SetString(PyExc_ValueError, "Offset out of bounds");
	return NULL;
    }

    Py_INCREF(Py_None);
    return Py_None;
}
Example #5
0
//! creates a surface from the file
IImage* CImageLoaderDDS::loadImage(io::IReadFile* file) const
{
	u8 *memFile = new u8 [ file->getSize() ];
	file->read ( memFile, file->getSize() );

	ddsBuffer *header = (ddsBuffer*) memFile;
	IImage* image = 0;
	s32 width, height;
	eDDSPixelFormat pixelFormat;

	if ( 0 == DDSGetInfo( header, &width, &height, &pixelFormat) )
	{
		image = new CImage(ECF_A8R8G8B8, core::dimension2d<u32>(width, height));

		if ( DDSDecompress( header, (u8*) image->lock() ) == -1)
		{
			image->unlock();
			image->drop();
			image = 0;
		}
	}

	delete [] memFile;
	if ( image )
		image->unlock();

	return image;
}
Example #6
0
bool CPicture::CreateThumbnailFromSurface(const unsigned char *buffer, int width, int height, int stride, const std::string &thumbFile)
{
  CLog::Log(LOGDEBUG, "cached image '%s' size %dx%d", CURL::GetRedacted(thumbFile).c_str(), width, height);
  if (URIUtils::HasExtension(thumbFile, ".jpg"))
  {
#if defined(HAS_OMXPLAYER)
    if (COMXImage::CreateThumbnailFromSurface((BYTE *)buffer, width, height, XB_FMT_A8R8G8B8, stride, thumbFile.c_str()))
      return true;
#endif
  }

  unsigned char *thumb = NULL;
  unsigned int thumbsize=0;
  IImage* pImage = ImageFactory::CreateLoader(thumbFile);
  if(pImage == NULL || !pImage->CreateThumbnailFromSurface((BYTE *)buffer, width, height, XB_FMT_A8R8G8B8, stride, thumbFile.c_str(), thumb, thumbsize))
  {
    CLog::Log(LOGERROR, "Failed to CreateThumbnailFromSurface for %s", CURL::GetRedacted(thumbFile).c_str());
    delete pImage;
    return false;
  }

  XFILE::CFile file;
  const bool ret = file.OpenForWrite(thumbFile, true) && file.Write(thumb, thumbsize) == thumbsize;
  pImage->ReleaseThumbnailBuffer();
  delete pImage;

  return ret;
}
static PyObject *
image_resize(PyObject *self, PyObject *args)
{
    int x, y;
    int totalx=-1, totaly=-1;
    PyObject *pyim;

    if(!PyArg_ParseTuple(args,"Oiiii",&pyim,&x,&y,&totalx,&totaly))
    { 
	return NULL;
    }

    IImage *i = (IImage *)PyCObject_AsVoidPtr(pyim);
    if(NULL == i)
    {
	return NULL;
    }

    i->set_resolution(x,y,totalx,totaly);

    if(! i->ok())
    {
	PyErr_SetString(PyExc_MemoryError, "Image too large");
	return NULL;
    }

    Py_INCREF(Py_None);
    return Py_None;
}
void solveAndPaintOutput(int x0, int y0, int n, int mn,
        Vector rgbVector[3], const SparseMatrix& matrix, Vector solutionVectors[3],
		IImage& outputImage) {
	for (int color = 0; color < 3; color++) {
		cout << "Solving..."<<endl;
		// solve equations set for current color
		if (solveLinear(matrix, solutionVectors[color], rgbVector[color]) == 0) {
			cout << "FAIL main(): matrix.solve() failed with color: "<<color<<endl;
			return;
		} else {
			cout << "Done solving color "<<color<<endl;
		}

		// fill output image
		for (int pixel = 0; pixel < mn; pixel++) {
			int y = pixel / n;
			int x = pixel - n * y;

			int updateVal = (int)solutionVectors[color][pixel];

			if (updateVal > 255) {
				updateVal = 255;
			}
			else if (updateVal < 0) {
				updateVal = 0;
			}
			int updatedRGBVal = getUpdatedRGBValue(outputImage.getRGB(x + x0, y + y0), updateVal, color);
			outputImage.setRGB(x + x0, y + y0, updatedRGBVal);
		}
		cout<<"Done applying color "<<color<<" to output"<<endl;
	}
}
Example #9
0
			static void DynamicLightParamAssign(const DynamicLightParam& other,
												DynamicLightParam *self) {
				IImage *old = self->image;
				*self = other;
				self->image->AddRef();
				old->Release();
			}
Example #10
0
void Integral::IntegralScan(IImage& Source, IImage& Dest)
{
   PrepareFor(Source);

   CheckSameSize(Source, Dest);
   CheckFloat(Dest);

   uint Width = Source.Width();
   uint Height = Source.Height();

   Kernel(scan1, Source, Dest, Width, Height);

   if (GetNbGroupsW(Source) > 1)
   {
      make_kernel<Image2D, Image2D>(SelectProgram(Dest), "scan2")
         (EnqueueArgs(*m_CL, NDRange(GetNbGroupsW(Source) - 1, Source.Height())), Dest, *m_VerticalJunctions);
   }

#undef KERNEL_RANGE
#define KERNEL_RANGE(src_img) src_img.FullRange()

   Kernel(scan3, In(Dest, *m_VerticalJunctions), Dest);

   if (GetNbGroupsH(Source) > 1)
   {
      make_kernel<Image2D, Image2D>(SelectProgram(Dest), "scan4")
         (EnqueueArgs(*m_CL, NDRange(Source.Width(), GetNbGroupsH(Source) - 1)), Dest, *m_HorizontalJunctions);
   }

   Kernel(scan5, In(Dest, *m_HorizontalJunctions), Dest);
}
Example #11
0
/*
	Halflite Texture WAD
*/
IImage* CImageLoaderWAL2::loadImage(irr::io::IReadFile* file) const
{
	miptex_halflife header;

	file->seek(0);
	file->read(&header, sizeof(header));

#ifdef __BIG_ENDIAN__
	header.width = os::Byteswap::byteswap(header.width);
	header.height = os::Byteswap::byteswap(header.height);
#endif

	// palette
	//u32 paletteofs = header.mipmap[0] + ((rawtexsize * 85) >> 6) + 2;
	u32 *pal = new u32 [ 192 + 256 ];
	u8 *s = (u8*) pal;

	file->seek ( file->getSize() - 768 - 2 );
	file->read ( s, 768 );
	u32 i;

	for ( i = 0; i < 256; ++i, s+= 3 )
	{
		pal [ 192 + i ] = 0xFF000000 | s[0] << 16 | s[1] << 8 | s[2];
	}

	ECOLOR_FORMAT format = ECF_R8G8B8;

	// transparency in filename;-) funny. rgb:0x0000FF is colorkey
	if ( file->getFileName().findFirst ( '{' ) >= 0 )
	{
		format = ECF_A8R8G8B8;
		pal [ 192 + 255 ] &= 0x00FFFFFF;
	}

	u32 rawtexsize = header.width * header.height;


	u8 *rawtex = new u8 [ rawtexsize ];

	file->seek ( header.mipmap[0] );
	file->read(rawtex, rawtexsize);

	IImage* image = new CImage(format, core::dimension2d<u32>(header.width, header.height));

	switch ( format )
	{
	case ECF_R8G8B8:
		CColorConverter::convert8BitTo24Bit(rawtex, (u8*)image->getData(), header.width, header.height, (u8*) pal + 768, 0, false);
		break;
	case ECF_A8R8G8B8:
		CColorConverter::convert8BitTo32Bit(rawtex, (u8*)image->getData(), header.width, header.height, (u8*) pal + 768, 0, false);
		break;
	}

	delete [] rawtex;
	delete [] pal;

	return image;
}
Example #12
0
Desktop::Desktop(ViewLogicGame& owner, IrrlichtDevice* pDevice)
: IGUIElement(EGUIET_ELEMENT, pDevice->getGUIEnvironment(), pDevice->getGUIEnvironment()->getRootGUIElement(), -1, core::rect<s32>(0, 0, 0, 0))
, m_owner(owner)
, m_pDevice(pDevice)
, m_pAppBar(NULL)
, m_pFontCourier(NULL)
, m_mutexApps(true)
, m_pSoftwareMgr(NULL)
, m_pItemMgr(NULL)
{
#ifdef _DEBUG
  setDebugName("Desktop");
#endif//_DEBUG
  // set the desktop dimensions
  core::dimension2d<s32> screenRes = pDevice->getVideoDriver()->getScreenSize();
  AbsoluteRect = core::rect<s32>(0, 0, screenRes.Width, screenRes.Height);
  AbsoluteClippingRect = AbsoluteRect;

  // load the desktop graphic and scale it as the wallpaper
	IImage* pImg = m_pDevice->getVideoDriver()->createImageFromFile("./clientdata/desktop.jpg");
	IImage* pImg2 = m_pDevice->getVideoDriver()->createImage(pImg->getColorFormat(), screenRes);

	pImg->copyToScaling( pImg2 );
  pImg->drop();

	m_pBackground = m_pDevice->getVideoDriver()->addTexture("desktop", pImg2);
  pImg2->drop();

	// create the font(s)
	m_pFontCourier = m_pDevice->getGUIEnvironment()->getFont("./clientdata/fonts/fontcourier.png");

  // create the desktop app bar
  m_pAppBar = new DesktopAppBar(Environment, this);
}
static PyObject *
image_create(PyObject *self, PyObject *args)
{
    int x, y;
    int totalx = -1, totaly = -1;
    if(!PyArg_ParseTuple(args,"ii|ii",&x,&y,&totalx, &totaly))
    { 
	return NULL;
    }

    IImage *i = new image();
#ifdef DEBUG_CREATION
    printf("%p : IM : CTOR\n",i);
#endif
    i->set_resolution(x,y,totalx, totaly);

    if(! i->ok())
    {
	PyErr_SetString(PyExc_MemoryError, "Image too large");
	delete i;
	return NULL;
    }

    PyObject *pyret = PyCObject_FromVoidPtr(i,(void (*)(void *))image_delete);

    return pyret;
}
Example #14
0
/*!
	quake2
*/
IImage* CImageLoaderWAL::loadImage(irr::io::IReadFile* file) const
{
	miptex_quake2 header;

	file->seek(0);
	file->read(&header, sizeof(header));

#ifdef __BIG_ENDIAN__
	header.width = os::Byteswap::byteswap(header.width);
	header.height = os::Byteswap::byteswap(header.height);
#endif

	u32 rawtexsize = header.width * header.height;

	u8 *rawtex = new u8 [ rawtexsize ];

	file->seek ( header.mipmap[0] );
	file->read(rawtex, rawtexsize);

	IImage* image = new CImage(ECF_A8R8G8B8, core::dimension2d<u32>(header.width, header.height));

	CColorConverter::convert8BitTo32Bit(rawtex, (u8*)image->getData(), header.width, header.height, (u8*) colormap_pcx, 0, false);

	delete [] rawtex;

	return image;
}
Example #15
0
IImage* createRainbowImage( u32 w, u32 h, u8 transparency, f64 gamma)
{
	// create image
	core::dimension2du size(w,h);

	IImage* img = (IImage*)new CImage(ECF_A8R8G8B8, size);

	if (!img) return 0;

	size = img->getDimension();

	// loop pixels per col
	for (u32 y=0; y<size.Height; y++)
	{
		// calculate rainbow-color
		SColor c = createRainbowColor( y, size.Height, gamma);

		// set transparency
		c.setAlpha(transparency);

		// write one row with same color
		for (u32 x=0; x<size.Width; x++)
		{
			// write rainbow-color
			img->setPixel(x,y,c,false);
		}
	}

	return img;
}
Example #16
0
/*!
	Quake1, Quake2, Hallife lmp texture
*/
IImage* CImageLoaderLMP::loadImage(irr::io::IReadFile* file) const
{
	SLMPHeader header;

	file->seek(0);
	file->read(&header, sizeof(header));

	// maybe palette file
	u32 rawtexsize = header.width * header.height;
	if ( rawtexsize + sizeof ( header ) != file->getSize() )
		return 0;

	u8 *rawtex = new u8 [ rawtexsize ];

	file->read(rawtex, rawtexsize);

	IImage* image = new CImage(ECF_A8R8G8B8, core::dimension2d<u32>(header.width, header.height));

	CColorConverter::convert8BitTo32Bit(rawtex, (u8*)image->lock(), header.width, header.height, (u8*) colormap_h, 0, false);
	image->unlock();

	delete [] rawtex;

	return image;
}
void PhysicsSim::addTerrain(stringw heightfield_file, stringw texture_file, Vector3D scale)
{
	stringw filename = mediaDirectory + heightfield_file;
	stringw texfilename = mediaDirectory + texture_file;

	IImage* hfimg = driver->createImageFromFile (filename.c_str());

	int img_width = hfimg->getDimension().Width;
	int img_height = hfimg->getDimension().Height;

	float xScale = scale.X, yScale = scale.Y, zScale = scale.Z;

	ITerrainSceneNode* terrain = smgr->addTerrainSceneNode(	filename.c_str(),
											smgr->getRootSceneNode(),               // parent node
											-1,                                     // node id
											vector3df(0.f, 0.f, 0.f),               // position
											vector3df(0.f, 0.f, 0.f),               // rotation
											vector3df(1.f, 1.0f, 1.f),              // scale
											video::SColor ( 255, 255, 255, 255 ),   // vertexColor
											5,                                      // maxLOD
											ETPS_17,                                // patchSize
											4                                       // smoothFactor
											);
	terrain->setMaterialTexture(0, driver->getTexture(texfilename.c_str()));
	terrain->scaleTexture(200.0f, 0);

	terrain->setScale(vector3df(xScale, yScale, zScale));
	terrain->setPosition(vector3df(-((img_width-1.0)*xScale)/2.0, 0.0, -((img_height-1.0)*zScale)/2.0));

	this->terrain = new Terrain(terrain, hfimg, Vector3D(xScale, yScale, zScale));

	dynamicsWorld->addRigidBody(this->terrain->getRigidBody());

}
Example #18
0
void CShowableAnim::blitImage(size_t frame, size_t group, SDL_Surface *to)
{
	assert(to);
	Rect src( xOffset, yOffset, pos.w, pos.h);
	IImage * img = anim->getImage(frame, group);
	if (img)
		img->draw(to, pos.x-xOffset, pos.y-yOffset, &src, alpha);
}
Example #19
0
	//--------------------------------------------------------------------------------
    void TemplateSimplePro::setEvent()
    {
        IImage* headImage = getLayout()->getImage("Image_Head");
        assert(headImage);
        headImage->getWidget()->setMouseButtonClickEvent(onMouseClickImagehead);
        headImage->getWidget()->setMouseButtonPressedEvent(onMouseReleaseImagehead);
        headImage->getWidget()->setToolTipsEvent(onTooltipsImagehead);
    }
Example #20
0
	//--------------------------------------------------------------------------------
    void TemplateSimplePro::onMouseClickImagehead( void* widget )
    {
        IImage* pMenu = (IImage*)widget;
        if ( pMenu )
        {
            pMenu->setTexture("simpleHead.png");
            TemplateSimplePro::getInstance().setClick();
        }
    }
Example #21
0
bool Game::takescreenshot(){
                        // screenshot are taken without gamma!
    IImage* image = device->getVideoDriver()->createScreenShot();
    if (image)
    {
        device->getVideoDriver()->writeImageToFile(image, "screenshot.png", 100 );
        image->drop();
    }

}
Example #22
0
void CAnimImage::showAll(SDL_Surface * to)
{
	IImage *img;

	if ( flags & CShowableAnim::BASE && frame != 0)
		if ((img = anim->getImage(0, group)))
			img->draw(to, pos.x, pos.y);

	if ((img = anim->getImage(frame, group)))
		img->draw(to, pos.x, pos.y);
}
Example #23
0
//-------------------------------------
// Loads in a image from a file and returns it
	// p1 in - pointer to the imagedata for the mesh
	// rv - pointer IImage object and nullptr if failed
IImage *CRendererOpenGL::LoadImage(ImageData* id)
{
	IImage *pImage = new CImageOpenGL();
	if( !pImage->Load(id) )
	{
		delete pImage;
		return nullptr;
	}
	
	m_vpImages.push_back(pImage);
	return pImage;
}
Example #24
0
 void Camera::snapshot(const std::string& filename)
 {        
     LOG_F_DEBUG("render", "Taking snapshot!");
     IImage* img = mIrr.mpVideoDriver->createScreenShot();
     if(!img)
         LOG_F_ERROR("render", "Snapshot mage is null!");
     else {
         if (!mIrr.mpVideoDriver->writeImageToFile(img, filename.c_str()))
             LOG_F_ERROR("render", "Could not write snapshot image!");
         img->drop();
     }
 }
Example #25
0
HBITMAP SHLoadImageFile(  LPCTSTR pszFileName )
{
    if ( !pszFileName || !*pszFileName )
        return 0;

    String strFileName = convertToStringA(pszFileName);
    /*if ( String_endsWith(strFileName, ".bmp") )
    {
        return (HBITMAP)::LoadImage(NULL, pszFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    }*/

    if ( !String_endsWith(strFileName, ".png") && !String_endsWith(strFileName, ".bmp") )
        return 0;

	IImagingFactory *pImgFactory = NULL;
    IImage *pImage = NULL;
    //CoInitializeEx(NULL, COINIT_MULTITHREADED);
	HBITMAP hResult = 0;
    if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
                                    NULL,
                                    CLSCTX_INPROC_SERVER,
                                    IID_IImagingFactory,
                                    (void **)&pImgFactory)))
    {
		ImageInfo imageInfo;
		if (SUCCEEDED(pImgFactory->CreateImageFromFile(CA2W(strFileName.c_str()), &pImage))
			&& SUCCEEDED(pImage->GetImageInfo(&imageInfo)))
        {
			CWindowDC dc(getMainWnd());
			CDC dcBitmap;
			dcBitmap.CreateCompatibleDC(dc.m_hDC);
			hResult = CreateCompatibleBitmap(dc.m_hDC, imageInfo.Width, imageInfo.Height);
			if (hResult) 
			{
				HBITMAP hOldBitmap = dcBitmap.SelectBitmap(hResult);
                //dcBitmap.FillSolidRect( 0,0, imageInfo.Width, imageInfo.Height, RGB(255,255,255));

                CRect rc(0, 0, imageInfo.Width, imageInfo.Height);
	            COLORREF clrOld = ::SetBkColor(dcBitmap.m_hDC, RGB(255,255,255));
	            ::ExtTextOut(dcBitmap.m_hDC, 0, 0, ETO_OPAQUE, &rc, NULL, 0, NULL);
	            ::SetBkColor(dcBitmap.m_hDC, clrOld);

				pImage->Draw(dcBitmap.m_hDC, rc, NULL);
				dcBitmap.SelectBitmap(hOldBitmap);
			}
			pImage->Release();
       }
       pImgFactory->Release();
    }
    //CoUninitialize();

	return hResult;
}
Example #26
0
void CAnimImage::init()
{
	anim->load(frame, group);
	if (flags & CShowableAnim::BASE)
		anim->load(0,group);

	IImage *img = anim->getImage(frame, group);
	if (img)
	{
		pos.w = img->width();
		pos.h = img->height();
	}
}
Example #27
0
ITexture* createRainbowTexture( IVideoDriver* driver, u32 w, u32 h, u8 transparency, f64 gamma)
{
	if (!driver)
	{
		return 0;
	}

	IImage* img = createRainbowImage(w,h,transparency, gamma);
	if (!img)
		return 0;

	ITexture* tex = 0;

	//! save states
	bool b0 = driver->getTextureCreationFlag(ETCF_ALLOW_NON_POWER_2);
	bool b1 = driver->getTextureCreationFlag(ETCF_ALWAYS_16_BIT);
	bool b2 = driver->getTextureCreationFlag(ETCF_ALWAYS_32_BIT);
	bool b3 = driver->getTextureCreationFlag(ETCF_CREATE_MIP_MAPS);
	bool b4 = driver->getTextureCreationFlag(ETCF_FORCE_32_BIT_DO_NOT_USE);
	bool b5 = driver->getTextureCreationFlag(ETCF_NO_ALPHA_CHANNEL);
	bool b6 = driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY);
	bool b7 = driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED);

	//! my states
	driver->setTextureCreationFlag(ETCF_ALLOW_NON_POWER_2,true);
	driver->setTextureCreationFlag(ETCF_ALWAYS_16_BIT,false);
	driver->setTextureCreationFlag(ETCF_ALWAYS_32_BIT,true);
	driver->setTextureCreationFlag(ETCF_CREATE_MIP_MAPS,true);
	driver->setTextureCreationFlag(ETCF_FORCE_32_BIT_DO_NOT_USE,false);
	driver->setTextureCreationFlag(ETCF_NO_ALPHA_CHANNEL,false);
	driver->setTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY,true);
	driver->setTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED,false);

	//! my RainbowTexture
	tex = driver->addTexture("rainbow", img, 0);

	//! restore states
	driver->setTextureCreationFlag(ETCF_ALLOW_NON_POWER_2,b0);
	driver->setTextureCreationFlag(ETCF_ALWAYS_16_BIT,b1);
	driver->setTextureCreationFlag(ETCF_ALWAYS_32_BIT,b2);
	driver->setTextureCreationFlag(ETCF_CREATE_MIP_MAPS,b3);
	driver->setTextureCreationFlag(ETCF_FORCE_32_BIT_DO_NOT_USE,b4);
	driver->setTextureCreationFlag(ETCF_NO_ALPHA_CHANNEL,b5);
	driver->setTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY,b6);
	driver->setTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED,b7);

	img->drop(); // delete rainbow-image

	return tex;
} // END FUNCTION
Example #28
0
//-----------------------------------------------------------------------------
// Purpose: Draw the current image
//-----------------------------------------------------------------------------
void AnimatingImagePanel::PaintBackground()
{
	if ( m_Frames.IsValidIndex( m_iCurrentImage ) && m_Frames[m_iCurrentImage] != NULL )
	{
		IImage *pImage = m_Frames[m_iCurrentImage];

		surface()->DrawSetColor( 255, 255, 255, 255 );
		pImage->SetPos(0, 0);
		
		if ( m_bScaleImage )
		{
			// Image size is stored in the bitmap, so temporarily set its size
			// to our panel size and then restore after we draw it.

			int imageWide, imageTall;
			pImage->GetSize( imageWide, imageTall );

			int wide, tall;
			GetSize( wide, tall );
			pImage->SetSize( wide, tall );

			pImage->SetColor( Color( 255,255,255,255 ) );
			pImage->Paint();

			pImage->SetSize( imageWide, imageTall );
		}
		else
		{
			pImage->Paint();
		}
	}
}
Example #29
0
bool CAnimation::loadFrame(CDefFile * file, size_t frame, size_t group)
{
	if (size(group) <= frame)
	{
		printError(frame, group, "LoadFrame");
		return false;
	}

	IImage *image = getImage(frame, group, false);
	if (image)
	{
		image->increaseRef();
		return true;
	}

	//try to get image from def
	if (source[group][frame].getType() == JsonNode::DATA_NULL)
	{
		if (file)
		{
			auto frameList = file->getEntries();

			if (vstd::contains(frameList, group) && frameList.at(group) > frame) // frame is present
			{
				if (compressed)
					images[group][frame] = new CompImage(file, frame, group);
				else
					images[group][frame] = new SDLImage(file, frame, group);
				return true;
			}
		}
		// still here? image is missing

		printError(frame, group, "LoadFrame");
		images[group][frame] = new SDLImage("DEFAULT", compressed);
	}
	else //load from separate file
	{
		std::string filename = source[group][frame].Struct().find("file")->second.String();
	
		IImage * img = getFromExtraDef(filename);
		if (!img)
			img = new SDLImage(filename, compressed);

		images[group][frame] = img;
		return true;
	}
	return false;
}
Example #30
0
//! opens the file and loads it into the surface
ITexture* CNullDriver::loadTextureFromFile(IReadFile* file, const path& hashName )
{
	ITexture* texture = 0;
	IImage* image = createImageFromFile(file);

	if (image)
	{
		// create texture from surface
		texture = createDeviceDependentTexture(image, hashName.size() ? hashName : file->getFileName() );
		Printer::log("Loaded texture", file->getFileName());
		image->releaseRef();
	}

	return texture;
}