コード例 #1
0
ファイル: osd_sdl_gfx.c プロジェクト: kallisti5/huexpress
void
osd_gfx_blit()
{
	Slock(screen);
	// Edit the texture object's image data	using the information SDL_Surface gives us
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
		io.screen_w, io.screen_h, 0, GL_RGB, GL_UNSIGNED_BYTE,
		screen->pixels);
	Sulock(screen);

	int X = 0;
	int Y = 0;
	int windowWidth = screen->w;
	int windowHeight = screen->h;

	glBegin(GL_QUADS) ;
		glTexCoord2f(0, 0);
		glVertex3f(X, Y, 0);
		glTexCoord2f(1, 0);
		glVertex3f(X + windowWidth, Y, 0);
		glTexCoord2f(1, 1);
		glVertex3f(X + windowWidth, Y + windowHeight, 0);
		glTexCoord2f(0, 1);
		glVertex3f(X, Y + windowHeight, 0);
	glEnd();

	SDL_GL_SwapWindow(sdlWindow);
}
コード例 #2
0
ファイル: osd_sdl_gfx.c プロジェクト: kallisti5/huexpress
/*****************************************************************************

		Function: osd_gfx_put_image_normal

		Description: draw the raw computed picture to screen, without any effect
		trying to center it (I bet there is still some work on this, maybe not
														in this function)
		Parameters: none
		Return: nothing

*****************************************************************************/
void
osd_gfx_put_image_normal(void)
{
	uint32 sdlFlags = SDL_GetWindowFlags(sdlWindow);

	Slock(screen);
	dump_rgb_frame(screen->pixels);
	Sulock(screen);

	osd_gfx_blit();
}
コード例 #3
0
ファイル: curves.cpp プロジェクト: Ingener74/polypuch
	void Curves::reDraw() const {
		Slock(this->screen);

		DrawSurface(this->screen, this->back, 0, 0, 0, 0, this->back->w, this->back->h);

		vector<pair<curves::General *, CurveOptions *> >::const_iterator it;
		pair<curves::General *, CurveOptions *> currentPair;
		for (it = this->curves.begin(); it != this->curves.end(); it++) {
			currentPair = *it;
			if (currentPair.first) {
				currentPair.first->draw(
						this->screen,
						currentPair.second->pointColor,
						currentPair.second->pointRadius,
						currentPair.second->curveColor
						);
			}
		}

		vector<pair<polygon::Point, PointOptions *> >::const_iterator jt;
		pair<polygon::Point, PointOptions *> currentPointPair;
		for (jt = this->points.begin(); jt != this->points.end(); jt++) {
			currentPointPair = *jt;
			drawCircle(
					this->screen,
					currentPointPair.first.first,
					currentPointPair.first.second,
					currentPointPair.second->pointColor,
					currentPointPair.second->pointRadius
					);
		}

		Sulock(this->screen);

		SDL_Flip(this->screen);
	}
コード例 #4
0
ファイル: main.cpp プロジェクト: rdavydov/CBZViewSS
int main ( int argc, char** argv )
{
    Title();
    if(argc < MINIMUM_ARGC)
    {
        Usage(argv[0]);
        return 1;
    }

    //options parsing should be here

    const char* filename = argv[1];

    CBZHolder cbzReader;
    CBHolder* pHolder = (CBHolder*)(&cbzReader);

    if ( !(pHolder->InitFile(filename) && pHolder->GetFirstPage()))
    {
        cerr<< "Unable to open file "<<filename<<endl;
        return 1;
    }

    cout<<"Inited file... Starting SDL Loop..."<<endl;


    // initialize SDL video
    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        cerr<<"Unable to init SDL: "<<SDL_GetError()<<endl;
        return 1;
    }

    // make sure SDL cleans up before exit
    atexit(SDL_Quit);

    // create a new window
    SDL_Surface* screen = SDL_SetVideoMode(SCR_WIDTH, SCR_HEIGHT, DEPTH,
                                           SDL_SWSURFACE);
    if ( !screen )
    {
        cerr<<"Unable to set desired video: "<<SDL_GetError()<<endl;
        return 1;
    }

#ifdef mips
  SDL_ShowCursor(SDL_DISABLE);
#endif

    CPageHolder *holder=new CPageHolder;
    bool bInited = holder->InitHolder(pHolder->GetCurrentPage(), pHolder->GetCurrentPageSize());
    pHolder->DeleteCurrentPage();


    if (!bInited)
    {
        delete holder;
        atexit(SDL_Quit);
    }

    int gameRunning = 1;
    bool bNeedRedraw(true);
    bool bFirstDraw=true;
    holder->SetScaler(1);

    int nDelta=SCROLLSTEP;

    SDL_Event event;

 bool bUp=false;
 bool bDown=false;
 bool bLeft=false;
 bool bRight=false;
 bool bZoom=false;
 bool bUnZoom=false;
 bool bPgUp = false;
 bool bPgDown = false;
 bool bLF = false;
 bool bExit1 = false;
 bool bExit2 = false;
 bool bFineScroll =false;
	while (gameRunning)
	{
        bool bKeyPressed = bUp || bDown || bLeft || bRight || bZoom || bUnZoom || bPgUp || bPgDown ||
                            bLF || bExit1 || bExit2 || bFineScroll;


		if (bKeyPressed ? SDL_PollEvent(&event) : SDL_WaitEvent(&event))
		{


			switch( event.type ){
              case SDL_KEYDOWN:

					switch( event.key.keysym.sym ){
                    case KEY_LEFT:
                        //holder->MoveViewPort(nDelta*(-1),0);
                        bLeft=true;
                        break;
                    case KEY_RIGHT:
                        //holder->MoveViewPort(nDelta,0);
                        bRight=true;
                        break;
                    case KEY_UP:
                        //holder->MoveViewPort(0,nDelta*(-1) );
                        bUp=true;
                        break;
                    case KEY_DOWN:
                        //holder->MoveViewPort(0,nDelta);
                        bDown=true;
                        break;
                    case KEY_ZOOM:
                        bZoom=true;
                        break;
                    case KEY_UNZOOM:
                        bUnZoom=true;
                        break;

                    case KEY_PGDOWN:
                          bPgDown = true;
                        break;
                    case KEY_PGUP:
                          bPgUp = true;
                        break;
                    case KEY_FOREXIT1:
                          bExit1 = true;
                        break;
                    case KEY_FOREXIT2:
                          bExit2 = true;
                        break;
                    case KEY_LF:
                        bLF = true;
                        break;
                    case KEY_FINESCROLL:
                        bFineScroll=true;
                        break;
                    default:
                        break;
                }


              break;
                 case SDL_KEYUP:
                    bNeedRedraw=true;
					switch( event.key.keysym.sym ){
                    case KEY_LEFT:
                        bLeft=false;
                    case KEY_RIGHT:
                        bRight=false;
                        break;
                    case KEY_UP:
                        bUp=false;
                        break;
                    case KEY_DOWN:
                        bDown=false;
                        break;
                    case KEY_ZOOM:
                        bZoom=false;
                        break;
                    case KEY_UNZOOM:
                        bUnZoom=false;
                        break;
                    case KEY_PGDOWN:
                        bPgDown = false;
                        break;
                    case KEY_PGUP:
                        bPgUp = false;
                        break;
                    case KEY_FOREXIT1:
                          bExit1 = false;
                        break;
                    case KEY_FOREXIT2:
                          bExit1 = false;
                        break;
                    case KEY_LF:
                        bLF = false;
                        break;
                    case KEY_FINESCROLL:
                        bFineScroll=false;
                        break;
                    default:
                        break;
                }


              break;

	          case SDL_QUIT:
               gameRunning = 0;
		      break;

               default:
               break;
             }
		}

		if (bUp)
		{
		    holder->MoveViewPort(0,nDelta*(-1) );
		    bNeedRedraw=true;
		}
		if (bDown)
		{
		    holder->MoveViewPort(0,nDelta);
		    bNeedRedraw=true;
		}
		if(bLeft)
		{
		    holder->MoveViewPort(nDelta*(-1),0);
		    bNeedRedraw=true;
		}

		if(bRight)
		{
		    holder->MoveViewPort(nDelta,0);
		    bNeedRedraw=true;
		}

		if(bZoom)
		{
		    holder->ScaleView(STEP);
		    bNeedRedraw=true;
		    bZoom=false;
		}

		if(bUnZoom)
		{
		    holder->ScaleView(STEP*BACK);
		    bNeedRedraw=true;
		    bUnZoom=false;
		}

		if(bPgDown)
		{
            if (pHolder->GetNextPage())
            {
              double dblScaler=holder->GetScaler();
              if(holder && bInited)
               delete holder;
              holder = new CPageHolder;
              bInited = holder->InitHolder(pHolder->GetCurrentPage(), pHolder->GetCurrentPageSize());
              pHolder->DeleteCurrentPage();
              holder->SetScaler(dblScaler);
              bNeedRedraw = true;
              bPgDown=false;
            }
		}

		if(bPgUp)
		{
            if (pHolder->GetPrevPage())
            {
              double dblScaler=holder->GetScaler();
              if(holder && bInited)
               delete holder;
              holder = new CPageHolder;
              bInited = holder->InitHolder(pHolder->GetCurrentPage(), pHolder->GetCurrentPageSize());
              pHolder->DeleteCurrentPage();
              holder->SetScaler(dblScaler);
              bNeedRedraw = true;
              bPgUp=false;
            }
		}

		if(bExit1 && bExit2)
		{
		    gameRunning = 0;
		    bExit1=false;
		    bExit2=false;

		}



		(bFineScroll) ? nDelta = SCROLLSTEP/SCROLLSTEP : nDelta = SCROLLSTEP;

		if ( bLF )
		{
		    //calc new pos.
		    bNeedRedraw = holder->LineFeed();
		    bLF=false;

		}



		//drawing goes here
		if (bNeedRedraw)
		{
		    Slock(screen);
		    holder->DrawViewPortToScreen(screen);
		    SDL_Flip(screen);
		    if(bFirstDraw)
		    {
		        bFirstDraw=false;
		        SDL_Flip(screen);
		        SDL_Flip(screen);
		        SDL_PumpEvents();
		        bKeyPressed=true;
		    }
    	    Sulock(screen);
		    bNeedRedraw=false;
		}


	}


    delete holder;

    // all is well ;)
    atexit(SDL_Quit);
    cout<<"Exited cleanly"<<endl;
    return 0;
}