CCCPaste

200372a3423f1

#include 
#include "opencv2/core/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include 
using namespace cv;

SDL_Surface* background = NULL;
SDL_Surface* sprite = NULL;
SDL_Surface* backbuffer = NULL;
SDL_Surface* asurface = NULL;
//pass in an opencv image, get a sureface out
//https://wiki.libsdl.org/SDL_CreateRGBSurfaceFrom
//http://stackoverflow.com/questions/22702630/converting-cvmat-to-sdl-texture
SDL_Surface* MatToSDL(const cv::Mat &frame){
    IplImage opencvimg2 = (IplImage)frame;
    IplImage* opencvimg = &opencvimg2;

     //Convert to SDL_Surface
    asurface = SDL_CreateRGBSurfaceFrom(
                         (void*)opencvimg->imageData,
                         opencvimg->width, opencvimg->height,
                         opencvimg->depth*opencvimg->nChannels,
                         opencvimg->widthStep,
                         0xff0000, 0x00ff00, 0x0000ff, 0);

    if(asurface == NULL){
        printf("Couldn't convert Mat to Surface.");
        return NULL;
    }    else    {
        printf("SUCCESS! conversion!");
        return asurface;
    }

    cvReleaseImage(&opencvimg);

}
bool ProgramIsRunning();
bool LoadImages();
void FreeImages();

int main(int argc, char* args[]){
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
        printf("SDL failed to initialize!\n");
        SDL_Quit();
        return 0;
    }

    backbuffer = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
    SDL_WM_SetCaption("SDL!!!", NULL);

    if(!LoadImages()){
        printf("Images failed to load!\n");
        FreeImages();
        SDL_Quit();

        return 0;
    }

    SDL_BlitSurface(background, NULL, backbuffer, NULL );

    while(ProgramIsRunning()){
        SDL_Rect spritePos;
        spritePos.x = rand()%800;
        spritePos.y = rand()%600;

        SDL_BlitSurface(sprite, NULL, backbuffer, &spritePos);

        SDL_Flip(backbuffer);

        SDL_Delay(100);
    }
    SDL_Quit();

    return 1;
}

bool ProgramIsRunning(){
    SDL_Event event;

    bool running = true;

    while(SDL_PollEvent(&event))
    {
        if(event.type == SDL_QUIT)
            running = false;
    }

    return running;
}

bool LoadImages(){
    if(background == NULL){
        printf("Image failed to load!\n");
        //SDL_Quit();
        return 0;
    }


    sprite = SDL_LoadBMP("graphics/sprite.bmp");

    if(sprite == NULL)
        return false;

    return true;
}

void FreeImages(){
    if(background != NULL){
        SDL_FreeSurface(background);
        background = NULL;
    }

    if(sprite != NULL){
        SDL_FreeSurface(sprite);
        sprite = NULL;
    }
}