X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fscreen.cpp;h=07d3f947da27e407b67de14269505ff0beea9b73;hb=aaa65d90ac812f924cbbc39bef7a5f8b6cad2da3;hp=09cd0b56a35fcb25a2f21eec2eb097596cb825b5;hpb=700f1449af19115ff2bbe50ad67ea7c73f9aa5cd;p=ipdf%2Fcode.git diff --git a/src/screen.cpp b/src/screen.cpp index 09cd0b5..07d3f94 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -2,6 +2,8 @@ #include "screen.h" #include "SDL_opengl.h" +#include // for access(2) +#include // for access(2) using namespace IPDF; using namespace std; @@ -82,7 +84,7 @@ bool Screen::PumpEvents() m_last_mouse_y = evt.button.y; if (m_mouse_handler) { - m_mouse_handler(evt.button.x, evt.button.y, evt.button.state, 0); + m_mouse_handler(evt.button.x, evt.button.y, evt.button.state?evt.button.button:0, 0); } break; case SDL_MOUSEWHEEL: @@ -100,6 +102,7 @@ bool Screen::PumpEvents() filename[0] = (char)evt.key.keysym.sym; ScreenShot(filename); } + break; } default: break; @@ -139,8 +142,7 @@ void Screen::ScreenShot(const char * filename) const unsigned char * pixels = new unsigned char[w*h*4]; if (pixels == NULL) Fatal("Failed to allocate %d x %d x 4 = %d pixel array", w, h, w*h*4); - glReadBuffer(GL_FRONT); - glPixelStorei(GL_PACK_ALIGNMENT, 1); + for (int y = 0; y < h; ++y) { glReadPixels(0,h-y-1,w, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixels[y*w*4]); @@ -171,6 +173,11 @@ void Screen::ScreenShot(const char * filename) const */ void Screen::RenderBMP(const char * filename) const { + if (access(filename, R_OK) == -1) + { + Error("No such file \"%s\" - Nothing to render - You might have done this deliberately?", filename); + return; + } SDL_Surface * bmp = SDL_LoadBMP(filename); if (bmp == NULL) Fatal("Failed to load BMP from %s - %s", filename, SDL_GetError());