void ossimPlanetQtImage::convertToOssimImage() { if(format() != QImage::Format_RGB32) { (*this) = convertToFormat(QImage::Format_RGB32); } ossim_uint32 w = width(); ossim_uint32 h = height(); ossim_uint32 area = w*h; const ossim_uint32* bitsPtr = (ossim_uint32*)bits(); theImage = new ossimImageData(0, OSSIM_UINT8, 3, w, h); theImage->initialize(); ossim_uint8* outBufRed = (ossim_uint8*)theImage->getBuf(0); ossim_uint8* outBufGreen = (ossim_uint8*)theImage->getBuf(1); ossim_uint8* outBufBlue = (ossim_uint8*)theImage->getBuf(2); if(bitsPtr) { ossim_uint32 offset = 0; while(offset < area) { *outBufRed = (ossim_uint8)(((*bitsPtr)&0x00ff0000)>>16); *outBufGreen = (ossim_uint8)(((*bitsPtr)&0x0000ff00)>>8); *outBufBlue = (ossim_uint8)(((*bitsPtr)&0x000000ff)); ++outBufRed; ++outBufGreen; ++outBufBlue; ++bitsPtr; ++offset; } } theImage->validate(); }
void Basic2DWindowOpenGLDisplayPlugin::customizeContext() { #if defined(Q_OS_ANDROID) qreal dpi = getFullscreenTarget()->physicalDotsPerInch(); _virtualPadPixelSize = dpi * VirtualPad::Manager::BASE_DIAMETER_PIXELS / VirtualPad::Manager::DPI; if (!_virtualPadStickTexture) { auto iconPath = PathUtils::resourcesPath() + "images/analog_stick.png"; auto image = QImage(iconPath); if (image.format() != QImage::Format_ARGB32) { image = image.convertToFormat(QImage::Format_ARGB32); } if ((image.width() > 0) && (image.height() > 0)) { image = image.scaled(_virtualPadPixelSize, _virtualPadPixelSize, Qt::KeepAspectRatio); _virtualPadStickTexture = gpu::Texture::createStrict( gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA), image.width(), image.height(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR)); _virtualPadStickTexture->setSource("virtualPad stick"); auto usage = gpu::Texture::Usage::Builder().withColor().withAlpha(); _virtualPadStickTexture->setUsage(usage.build()); _virtualPadStickTexture->setStoredMipFormat(gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA)); _virtualPadStickTexture->assignStoredMip(0, image.byteCount(), image.constBits()); _virtualPadStickTexture->setAutoGenerateMips(true); } } if (!_virtualPadStickBaseTexture) { auto iconPath = PathUtils::resourcesPath() + "images/analog_stick_base.png"; auto image = QImage(iconPath); if (image.format() != QImage::Format_ARGB32) { image = image.convertToFormat(QImage::Format_ARGB32); } if ((image.width() > 0) && (image.height() > 0)) { image = image.scaled(_virtualPadPixelSize, _virtualPadPixelSize, Qt::KeepAspectRatio); _virtualPadStickBaseTexture = gpu::Texture::createStrict( gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA), image.width(), image.height(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR)); _virtualPadStickBaseTexture->setSource("virtualPad base"); auto usage = gpu::Texture::Usage::Builder().withColor().withAlpha(); _virtualPadStickBaseTexture->setUsage(usage.build()); _virtualPadStickBaseTexture->setStoredMipFormat(gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA)); _virtualPadStickBaseTexture->assignStoredMip(0, image.byteCount(), image.constBits()); _virtualPadStickBaseTexture->setAutoGenerateMips(true); } } if (_virtualPadButtons.size() == 0) { _virtualPadButtons.append(VirtualPadButton( dpi * VirtualPad::Manager::BTN_FULL_PIXELS / VirtualPad::Manager::DPI, PathUtils::resourcesPath() + "images/fly.png", VirtualPad::Manager::Button::JUMP)); _virtualPadButtons.append(VirtualPadButton( dpi * VirtualPad::Manager::BTN_FULL_PIXELS / VirtualPad::Manager::DPI, PathUtils::resourcesPath() + "images/handshake.png", VirtualPad::Manager::Button::HANDSHAKE)); } #endif Parent::customizeContext(); }