[Libreoffice-commits] core.git: Branch 'feature/opengl-vcl' - vcl/workben
Michael Meeks
michael.meeks at collabora.com
Thu Nov 6 21:42:25 PST 2014
vcl/workben/icontest.cxx | 218 -----------------------------------------------
1 file changed, 4 insertions(+), 214 deletions(-)
New commits:
commit 15e15f5ed18fc46c83a1afb31bf4c0a67e78793d
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Fri Nov 7 05:42:51 2014 +0000
icontest: remove hand-coded opengl path.
Change-Id: I5e465e1dacfd5d2c3a34fe2f3aefc263bccc14c5
diff --git a/vcl/workben/icontest.cxx b/vcl/workben/icontest.cxx
index f9b0709..5c73b92 100644
--- a/vcl/workben/icontest.cxx
+++ b/vcl/workben/icontest.cxx
@@ -80,21 +80,6 @@ public:
virtual void Resize() SAL_OVERRIDE;
};
-class MyOpenGLWorkWindow : public MyWorkWindow
-{
-public:
- bool mbHaveTexture;
- OpenGLWindow *mpOpenGLWindow;
- GLuint mnTextureName;
- float mnTextureAspect;
-
- void LoadTexture();
-
- MyOpenGLWorkWindow( vcl::Window* pParent, WinBits nWinStyle );
-
- virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
-};
-
MyWorkWindow::MyWorkWindow( vcl::Window* pParent, WinBits nWinStyle )
: WorkWindow(pParent, nWinStyle)
, mpBitmap(NULL)
@@ -145,165 +130,6 @@ void MyWorkWindow::Paint( const Rectangle& rRect )
Invalidate( INVALIDATE_CHILDREN );
}
-MyOpenGLWorkWindow::MyOpenGLWorkWindow( vcl::Window* pParent, WinBits nWinStyle )
- : MyWorkWindow(pParent, nWinStyle)
- , mnTextureName(0)
- , mnTextureAspect(0)
-{
- mbHaveTexture = false;
- mpOpenGLWindow = new OpenGLWindow( this );
- mpOpenGLWindow->SetSizePixel( Size( WIDTH, HEIGHT ) );
- mpOpenGLWindow->Show();
- mpOpenGLWindow->EnableInput();
-}
-
-void MyOpenGLWorkWindow::LoadTexture()
-{
- mbHaveTexture = true;
-
- glEnable(GL_TEXTURE_2D);
- CHECK_GL_ERROR();
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- CHECK_GL_ERROR();
-
- glGenTextures( 1, &mnTextureName );
- CHECK_GL_ERROR();
-
- glBindTexture(GL_TEXTURE_2D, mnTextureName);
- CHECK_GL_ERROR();
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- CHECK_GL_ERROR();
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- CHECK_GL_ERROR();
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- CHECK_GL_ERROR();
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- CHECK_GL_ERROR();
-
- BitmapEx aBitmap( maGraphic.GetBitmapEx( ) );
- Size aBitmapSize( aBitmap.GetSizePixel() );
-
- GLint maxTexSize;
- glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize);
- CHECK_GL_ERROR();
-
- SAL_INFO("vcl.icontest", "GL_MAX_TEXTURE_SIZE: " << maxTexSize);
-
- if (aBitmapSize.Width() > maxTexSize || aBitmapSize.Height() > maxTexSize)
- {
- Size aNewSize(aBitmapSize);
- if (aNewSize.Width() > maxTexSize)
- {
- aNewSize.setHeight(aNewSize.Height() * (((float) maxTexSize) / aNewSize.Width()));
- aNewSize.setWidth(maxTexSize);
- }
- if (aNewSize.Height() > maxTexSize)
- {
- aNewSize.setWidth(aNewSize.Width() * (((float) maxTexSize) / aNewSize.Height()));
- aNewSize.setHeight(maxTexSize);
- }
- SAL_INFO("vcl.icontest", "Scaling to " << aNewSize);
- aBitmap.Scale(aNewSize, BMP_SCALE_SUPER);
- aBitmapSize = aNewSize;
- }
-
- SAL_INFO("vcl.icontest", "GLEW_ARB_texture_non_power_of_two: " << (GLEW_ARB_texture_non_power_of_two ? "YES" : "NO"));
-
- GLsizei texWidth(aBitmapSize.Width()), texHeight(aBitmapSize.Height());
-
- mnTextureAspect = ((float) aBitmapSize.Width()) / aBitmapSize.Height();
-
- if (!GLEW_ARB_texture_non_power_of_two)
- {
- texWidth = texHeight = std::max(aBitmapSize.Width(), aBitmapSize.Height());
- if (!glm::isPowerOfTwo(texWidth))
- {
- texWidth = glm::powerOfTwoAbove(texWidth);
- texHeight = texWidth;
- }
-
- aBitmap.Expand(texWidth - aBitmapSize.Width(), texHeight - aBitmapSize.Height());
-
- mnTextureAspect = 1;
- }
-
- SAL_INFO("vcl.icontest", "Texture size: " << texWidth << "x" << texHeight);
-
- GLubyte *buffer = new GLubyte[texWidth * texHeight * 4];
- OpenGLHelper::ConvertBitmapExToRGBATextureBuffer( aBitmap, buffer, true );
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
- texWidth, texHeight,
- 0, GL_RGBA, GL_UNSIGNED_BYTE,
- buffer);
- CHECK_GL_ERROR();
-
- delete[] buffer;
-}
-
-void MyOpenGLWorkWindow::Paint( const Rectangle& )
-{
- std::cout << "==> Paint! "<< mnPaintCount++ << " (OpenGL) " << GetSizePixel() << " " << getTimeNow() - mnStartTime << std::endl;
- OpenGLContext& aCtx = mpOpenGLWindow->getContext();
- aCtx.requestLegacyContext();
- CHECK_GL_ERROR();
-
- if (!mbHaveTexture)
- LoadTexture();
-
- aCtx.setWinSize( Size( WIDTH+1, HEIGHT+1 ) );
- CHECK_GL_ERROR();
-
- aCtx.makeCurrent();
- CHECK_GL_ERROR();
-
- glViewport( 0, 0, WIDTH, HEIGHT );
- CHECK_GL_ERROR();
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- CHECK_GL_ERROR();
-
- glBindTexture(GL_TEXTURE_2D, mnTextureName);
- CHECK_GL_ERROR();
-
- glPushMatrix();
- CHECK_GL_ERROR();
-
- glTranslatef(-1, -1, 0);
- glScalef(2, 2, 2);
-
- if (mnTextureAspect >= ((float) WIDTH) / HEIGHT)
- glScalef(1, 1/mnTextureAspect, 1);
- else
- glScalef(1*mnTextureAspect, 1, 1);
- CHECK_GL_ERROR();
-
- glBegin(GL_QUADS);
- glTexCoord2f(0, 0);
- glVertex3f(0, 0, 0);
- glTexCoord2f(0, 1);
- glVertex3f(0, 1 + (0.1*sin(mnPaintCount/50.)), 0);
- glTexCoord2f(1, 1);
- glVertex3f(1 + (0.1*sin(mnPaintCount/60.)), 1 + (0.1*sin(mnPaintCount/50.)), 0);
- glTexCoord2f(1, 0);
- glVertex3f(1 + (0.1*sin(mnPaintCount/60.)), 0, 0);
- glEnd();
- CHECK_GL_ERROR();
-
- glPopMatrix();
- CHECK_GL_ERROR();
-
- aCtx.swapBuffers();
- CHECK_GL_ERROR();
-
- if (mnPaintCount == 100)
- Application::Quit();
-
- Invalidate( INVALIDATE_CHILDREN );
-}
-
void MyWorkWindow::Resize()
{
SAL_INFO("vcl.icontest", "Resize " << GetSizePixel());
@@ -344,18 +170,13 @@ void IconTestApp::Init()
int IconTestApp::Main()
{
- if (GetCommandLineParamCount() != 2 ||
- (GetCommandLineParam(0) != "vcl" &&
- GetCommandLineParam(0) != "opengl"))
+ if (GetCommandLineParamCount() != 1)
{
- fprintf(stderr, "Usage: imagetest [vcl|opengl] image\n");
+ fprintf(stderr, "Usage: imagetest <image>\n");
return EXIT_FAILURE;
}
- OUString sImageFile( GetCommandLineParam( 1 ) );
- if (GetCommandLineParam(0) == "vcl")
- DoItWithVcl( sImageFile );
- else
- DoItWithOpenGL( sImageFile );
+ OUString sImageFile( GetCommandLineParam( 0 ) );
+ DoItWithVcl( sImageFile );
return nRet;
}
@@ -390,37 +211,6 @@ void IconTestApp::DoItWithVcl( const OUString& sImageFile)
}
}
-void IconTestApp::DoItWithOpenGL(const OUString& sImageFile)
-{
- try
- {
- MyOpenGLWorkWindow *pWindow = new MyOpenGLWorkWindow( NULL, WB_APP | WB_STDWORK | WB_SIZEABLE | WB_CLOSEABLE | WB_CLIPCHILDREN );
-
- pWindow->SetText(OUString("OpenGL Image Test"));
-
- pWindow->LoadGraphic( sImageFile );
-
- Size aGraphicSize( pWindow->maGraphic.GetSizePixel() );
- float aspect = ((float) aGraphicSize.Width()) / aGraphicSize.Height();
- SAL_INFO("vcl.icontest", sImageFile << ": size: " << aGraphicSize << " aspect: " << aspect);
-
- pWindow->Hide();
- pWindow->Show();
-
- Execute();
- }
- catch (const uno::Exception &e)
- {
- fprintf(stderr, "fatal error: %s\n", OUStringToOString(e.Message, osl_getThreadTextEncoding()).getStr());
- nRet = EXIT_FAILURE;
- }
- catch (const std::exception &e)
- {
- fprintf(stderr, "fatal error: %s\n", e.what());
- nRet = EXIT_FAILURE;
- }
-}
-
void vclmain::createApplication()
{
static IconTestApp aApp;
More information about the Libreoffice-commits
mailing list