Jump to content

  • Log In with Google      Sign In   
  • Create Account


Elidor

Member Since 24 Apr 2013
Offline Last Active May 01 2013 03:57 PM

Topics I've Started

SDL Surface Aligning

24 April 2013 - 05:10 PM

Hello GameDev, I have question for you all. Is there any way to perfectly aligning surfaces aside from estimation. For example I know how to center, right, left align surfaces but how can I know where exactly 60 pixels is before I compile and check. I was thinking of making a program to test a surface images in a sandbox to attain pixels but if there is another way of attaining offsets this would save me quite a bit of trouble.

Another thing while I'm at it. Is there a way to get the offsets of a blitted image in SDL. For example if I blit y onto buffer x is there a way I can get y's offsets from the SDL_Surface structure?

The reason I ask this is because I'm attempting to make a more flexible Surface class for my TestEngine than the one on sdltutorials.com.
Here's the header to illustrate my idea:

#ifndef _SURFACE_H_
#define _SURFACE_H_

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <stdexcept>

enum { LEFT_ALIGN, CENTER_ALIGN, RIGHT_ALIGN };
enum { TOP_ALIGN, MIDDLE_ALIGN, BOTTOM_ALIGN };

class Surface
{
public:
Surface();

public:
static SDL_Surface * onLoad(char * file, bool alpha);

static void onDraw(SDL_Surface * dest, SDL_Surface * src, int x, int y);

static void onDraw(SDL_Surface * dest, SDL_Surface * src, int x, int y, int x2, int y2, int w, int h);

static void drawAligned(SDL_Surface * dest, SDL_Surface * src, int xAlignment = CENTER_ALIGN, int yAlignment = MIDDLE_ALIGN);

static void drawAligned(SDL_Surface * dest, SDL_Surface * src, int x, int y, int w, int h, int xAlignment = CENTER_ALIGN, int yAlignment = MIDDLE_ALIGN);

private:
static SDL_Rect align(SDL_Surface * src, SDL_Surface * dest, const int & xAlignment, const int & yAlignment);

public:
static void transparent(SDL_Surface * dest, int r, int g, int b);
};

#endif

PARTNERS