diff options
| -rw-r--r-- | SConstruct | 10 | ||||
| -rw-r--r-- | SDLMain.h | 11 | ||||
| -rw-r--r-- | SDLMain.m | 384 | ||||
| -rwxr-xr-x | assimp.cpp | 2 | ||||
| -rwxr-xr-x | foo.cpp | 2 | ||||
| -rw-r--r-- | pattern.cpp | 2 | ||||
| -rw-r--r-- | pattern.h | 2 | ||||
| -rwxr-xr-x | texture.cpp | 29 | ||||
| -rwxr-xr-x | texture.h | 14 | ||||
| -rwxr-xr-x | texturepng.cpp | 45 | ||||
| -rwxr-xr-x | texturepng.h | 8 | ||||
| -rwxr-xr-x | texturesdl.cpp | 17 | ||||
| -rwxr-xr-x | texturesdl.h | 8 | 
13 files changed, 11 insertions, 523 deletions
@@ -2,16 +2,22 @@ env = Environment(  	LIBS = ['ARgsub_lite', 'ARvideo', 'AR', 'assimp'],  ) -common_sources = ['application.cpp', 'videoprovider.cpp', 'hcoord.cpp', 'pattern.cpp', 'texture.cpp', 'texturesdl.cpp'] +common_sources = ['application.cpp', 'videoprovider.cpp', 'hcoord.cpp', 'pattern.cpp']  if env['PLATFORM'] == 'darwin':  	env.Append(CPPFLAGS = '-m32')  	env.Append(LINKFLAGS = '-m32') +	env.Append(CPPPATH = ['.'])  	env.Append(FRAMEWORKS = ['SDL', 'SDL_image', 'Cocoa', 'OpenGL', 'QuickTime', 'Carbon', 'AppKit']) -	common_sources.append('SDLMain.m')  else:  	env.Append(LIBS = ['GL', 'GLU', 'SDL', 'SDL_image', 'SDLmain', 'gstreamer-0.10']) +Export('env') + +env.SConscript('wriggle/SConscript') +env.Append(LIBS = ['wriggle']) +env.Append(LIBPATH = ['wriggle']) +  env.Program('foo', ['foo.cpp'] + common_sources)  env.Program('assimp', ['assimp.cpp'] + common_sources) diff --git a/SDLMain.h b/SDLMain.h deleted file mode 100644 index 4683df5..0000000 --- a/SDLMain.h +++ /dev/null @@ -1,11 +0,0 @@ -/*   SDLMain.m - main entry point for our Cocoa-ized SDL app -       Initial Version: Darrell Walisser <dwaliss1@purdue.edu> -       Non-NIB-Code & other changes: Max Horn <max@quendi.de> - -    Feel free to customize this file to suit your needs -*/ - -#import <Cocoa/Cocoa.h> - -@interface SDLMain : NSObject -@end diff --git a/SDLMain.m b/SDLMain.m deleted file mode 100644 index 122fcc8..0000000 --- a/SDLMain.m +++ /dev/null @@ -1,384 +0,0 @@ -/*   SDLMain.m - main entry point for our Cocoa-ized SDL app -       Initial Version: Darrell Walisser <dwaliss1@purdue.edu> -       Non-NIB-Code & other changes: Max Horn <max@quendi.de> - -    Feel free to customize this file to suit your needs -*/ - -#import <SDL/SDL.h> -#import "SDLMain.h" -#import <sys/param.h> /* for MAXPATHLEN */ -#import <unistd.h> - -/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, - but the method still is there and works. To avoid warnings, we declare - it ourselves here. */ -@interface NSApplication(SDL_Missing_Methods) -- (void)setAppleMenu:(NSMenu *)menu; -@end - -/* Use this flag to determine whether we use SDLMain.nib or not */ -#define		SDL_USE_NIB_FILE	0 - -/* Use this flag to determine whether we use CPS (docking) or not */ -#define		SDL_USE_CPS		1 -#ifdef SDL_USE_CPS -/* Portions of CPS.h */ -typedef struct CPSProcessSerNum -{ -	UInt32		lo; -	UInt32		hi; -} CPSProcessSerNum; - -extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn); -extern OSErr 	CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); -extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn); - -#endif /* SDL_USE_CPS */ - -static int    gArgc; -static char  **gArgv; -static BOOL   gFinderLaunch; -static BOOL   gCalledAppMainline = FALSE; - -static NSString *getApplicationName(void) -{ -    NSDictionary *dict; -    NSString *appName = 0; - -    /* Determine the application name */ -    dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); -    if (dict) -        appName = [dict objectForKey: @"CFBundleName"]; -     -    if (![appName length]) -        appName = [[NSProcessInfo processInfo] processName]; - -    return appName; -} - -#if SDL_USE_NIB_FILE -/* A helper category for NSString */ -@interface NSString (ReplaceSubString) -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; -@end -#endif - -@interface SDLApplication : NSApplication -@end - -@implementation SDLApplication -/* Invoked from the Quit menu item */ -- (void)terminate:(id)sender -{ -    /* Post a SDL_QUIT event */ -    SDL_Event event; -    event.type = SDL_QUIT; -    SDL_PushEvent(&event); -} -@end - -/* The main class of the application, the application's delegate */ -@implementation SDLMain - -/* Set the working directory to the .app's parent directory */ -- (void) setupWorkingDirectory:(BOOL)shouldChdir -{ -    if (shouldChdir) -    { -        char parentdir[MAXPATHLEN]; -		CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); -		CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); -		if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { -	        assert ( chdir (parentdir) == 0 );   /* chdir to the binary app's parent */ -		} -		CFRelease(url); -		CFRelease(url2); -	} - -} - -#if SDL_USE_NIB_FILE - -/* Fix menu to contain the real app name instead of "SDL App" */ -- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName -{ -    NSRange aRange; -    NSEnumerator *enumerator; -    NSMenuItem *menuItem; - -    aRange = [[aMenu title] rangeOfString:@"SDL App"]; -    if (aRange.length != 0) -        [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; - -    enumerator = [[aMenu itemArray] objectEnumerator]; -    while ((menuItem = [enumerator nextObject])) -    { -        aRange = [[menuItem title] rangeOfString:@"SDL App"]; -        if (aRange.length != 0) -            [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; -        if ([menuItem hasSubmenu]) -            [self fixMenu:[menuItem submenu] withAppName:appName]; -    } -    [ aMenu sizeToFit ]; -} - -#else - -static void setApplicationMenu(void) -{ -    /* warning: this code is very odd */ -    NSMenu *appleMenu; -    NSMenuItem *menuItem; -    NSString *title; -    NSString *appName; -     -    appName = getApplicationName(); -    appleMenu = [[NSMenu alloc] initWithTitle:@""]; -     -    /* Add menu items */ -    title = [@"About " stringByAppendingString:appName]; -    [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; - -    [appleMenu addItem:[NSMenuItem separatorItem]]; - -    title = [@"Hide " stringByAppendingString:appName]; -    [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; - -    menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; -    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; - -    [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; - -    [appleMenu addItem:[NSMenuItem separatorItem]]; - -    title = [@"Quit " stringByAppendingString:appName]; -    [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; - -     -    /* Put menu into the menubar */ -    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; -    [menuItem setSubmenu:appleMenu]; -    [[NSApp mainMenu] addItem:menuItem]; - -    /* Tell the application object that this is now the application menu */ -    [NSApp setAppleMenu:appleMenu]; - -    /* Finally give up our references to the objects */ -    [appleMenu release]; -    [menuItem release]; -} - -/* Create a window menu */ -static void setupWindowMenu(void) -{ -    NSMenu      *windowMenu; -    NSMenuItem  *windowMenuItem; -    NSMenuItem  *menuItem; - -    windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; -     -    /* "Minimize" item */ -    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; -    [windowMenu addItem:menuItem]; -    [menuItem release]; -     -    /* Put menu into the menubar */ -    windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; -    [windowMenuItem setSubmenu:windowMenu]; -    [[NSApp mainMenu] addItem:windowMenuItem]; -     -    /* Tell the application object that this is now the window menu */ -    [NSApp setWindowsMenu:windowMenu]; - -    /* Finally give up our references to the objects */ -    [windowMenu release]; -    [windowMenuItem release]; -} - -/* Replacement for NSApplicationMain */ -static void CustomApplicationMain (int argc, char **argv) -{ -    NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init]; -    SDLMain				*sdlMain; - -    /* Ensure the application object is initialised */ -    [SDLApplication sharedApplication]; -     -#ifdef SDL_USE_CPS -    { -        CPSProcessSerNum PSN; -        /* Tell the dock about us */ -        if (!CPSGetCurrentProcess(&PSN)) -            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) -                if (!CPSSetFrontProcess(&PSN)) -                    [SDLApplication sharedApplication]; -    } -#endif /* SDL_USE_CPS */ - -    /* Set up the menubar */ -    [NSApp setMainMenu:[[NSMenu alloc] init]]; -    setApplicationMenu(); -    setupWindowMenu(); - -    /* Create SDLMain and make it the app delegate */ -    sdlMain = [[SDLMain alloc] init]; -    [NSApp setDelegate:sdlMain]; -     -    /* Start the main event loop */ -    [NSApp run]; -     -    [sdlMain release]; -    [pool release]; -} - -#endif - - -/* - * Catch document open requests...this lets us notice files when the app - *  was launched by double-clicking a document, or when a document was - *  dragged/dropped on the app's icon. You need to have a - *  CFBundleDocumentsType section in your Info.plist to get this message, - *  apparently. - * - * Files are added to gArgv, so to the app, they'll look like command line - *  arguments. Previously, apps launched from the finder had nothing but - *  an argv[0]. - * - * This message may be received multiple times to open several docs on launch. - * - * This message is ignored once the app's mainline has been called. - */ -- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename -{ -    const char *temparg; -    size_t arglen; -    char *arg; -    char **newargv; - -    if (!gFinderLaunch)  /* MacOS is passing command line args. */ -        return FALSE; - -    if (gCalledAppMainline)  /* app has started, ignore this document. */ -        return FALSE; - -    temparg = [filename UTF8String]; -    arglen = SDL_strlen(temparg) + 1; -    arg = (char *) SDL_malloc(arglen); -    if (arg == NULL) -        return FALSE; - -    newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); -    if (newargv == NULL) -    { -        SDL_free(arg); -        return FALSE; -    } -    gArgv = newargv; - -    SDL_strlcpy(arg, temparg, arglen); -    gArgv[gArgc++] = arg; -    gArgv[gArgc] = NULL; -    return TRUE; -} - - -/* Called when the internal event loop has just started running */ -- (void) applicationDidFinishLaunching: (NSNotification *) note -{ -    int status; - -    /* Set the working directory to the .app's parent directory */ -    [self setupWorkingDirectory:gFinderLaunch]; - -#if SDL_USE_NIB_FILE -    /* Set the main menu to contain the real app name instead of "SDL App" */ -    [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; -#endif - -    /* Hand off to main application code */ -    gCalledAppMainline = TRUE; -    status = SDL_main (gArgc, gArgv); - -    /* We're done, thank you for playing */ -    exit(status); -} -@end - - -@implementation NSString (ReplaceSubString) - -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString -{ -    unsigned int bufferSize; -    unsigned int selfLen = [self length]; -    unsigned int aStringLen = [aString length]; -    unichar *buffer; -    NSRange localRange; -    NSString *result; - -    bufferSize = selfLen + aStringLen - aRange.length; -    buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar)); -     -    /* Get first part into buffer */ -    localRange.location = 0; -    localRange.length = aRange.location; -    [self getCharacters:buffer range:localRange]; -     -    /* Get middle part into buffer */ -    localRange.location = 0; -    localRange.length = aStringLen; -    [aString getCharacters:(buffer+aRange.location) range:localRange]; -      -    /* Get last part into buffer */ -    localRange.location = aRange.location + aRange.length; -    localRange.length = selfLen - localRange.location; -    [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; -     -    /* Build output string */ -    result = [NSString stringWithCharacters:buffer length:bufferSize]; -     -    NSDeallocateMemoryPages(buffer, bufferSize); -     -    return result; -} - -@end - - - -#ifdef main -#  undef main -#endif - - -/* Main entry point to executable - should *not* be SDL_main! */ -int main (int argc, char **argv) -{ -    /* Copy the arguments into a global variable */ -    /* This is passed if we are launched by double-clicking */ -    if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { -        gArgv = (char **) SDL_malloc(sizeof (char *) * 2); -        gArgv[0] = argv[0]; -        gArgv[1] = NULL; -        gArgc = 1; -        gFinderLaunch = YES; -    } else { -        int i; -        gArgc = argc; -        gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); -        for (i = 0; i <= argc; i++) -            gArgv[i] = argv[i]; -        gFinderLaunch = NO; -    } - -#if SDL_USE_NIB_FILE -    [SDLApplication poseAsClass:[NSApplication class]]; -    NSApplicationMain (argc, argv); -#else -    CustomApplicationMain (argc, argv); -#endif -    return 0; -} - @@ -6,7 +6,7 @@  #include "hcoord.h" -#include "texturesdl.h" +#include <wriggle/texturesdl.h>  #include <assimp/assimp.hpp>  #include <assimp/aiScene.h> @@ -1,8 +1,6 @@  #include <stdexcept>  #include <iostream> -#include "texturepng.h" -  #include "pattern.h"  #include "application.h" diff --git a/pattern.cpp b/pattern.cpp index e2a8fcd..650a81b 100644 --- a/pattern.cpp +++ b/pattern.cpp @@ -8,7 +8,7 @@  #include <SDL/SDL.h>  #include <SDL/SDL_opengl.h> -#include "texturesdl.h" +#include <wriggle/texturesdl.h>  Pattern::Pattern(std::string filename) {  	patt_width = 25.0; @@ -2,7 +2,7 @@  #define PATTERN_H  #include <string> -#include "texture.h" +#include <wriggle/texture.h>  #include <AR/ar.h>  class Pattern { diff --git a/texture.cpp b/texture.cpp deleted file mode 100755 index 1678a97..0000000 --- a/texture.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __APPLE__ -#include <GL/gl.h> -#include <GL/glut.h> -#else -#include <OpenGL/gl.h> -#include <GLUT/glut.h> -#endif -#include <stdexcept> -#include "texture.h" - -unsigned int Texture::tex() { -	return texture; -} - -void Texture::build() { -	if(!data) { -		throw(std::runtime_error("No texture data")); -	} -	glGenTextures(1, &texture); -	glBindTexture(GL_TEXTURE_2D, texture); -	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST); -	//glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); -	if(byte_per_pixel == 4) { -		gluBuild2DMipmaps(GL_TEXTURE_2D, 4, width, height, GL_BGRA, GL_UNSIGNED_BYTE, data); -	} else if(byte_per_pixel == 3) { -		gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_BGR, GL_UNSIGNED_BYTE, data); -	} -} diff --git a/texture.h b/texture.h deleted file mode 100755 index 14e500f..0000000 --- a/texture.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _TEXTURE_H_ -#define _TEXTURE_H_ -class Texture { -	public: -		unsigned int tex(); -	protected: -		void build(); -		unsigned char* data; -		unsigned int width; -		unsigned int height; -		unsigned int byte_per_pixel; -		unsigned int texture; -}; -#endif // _TEXTURE_H_ diff --git a/texturepng.cpp b/texturepng.cpp deleted file mode 100755 index 19dd4ab..0000000 --- a/texturepng.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include <iostream> -#include <stdexcept> -#include <png.h> -#include "texturepng.h" - -TexturePNG::TexturePNG(const char* filename) { -	FILE *file = fopen(filename, "rb"); -	if(!file) { -		throw(std::runtime_error("TexturePNG file not found")); -	} -	png_byte header[8]; -	fread(header, 1, 8, file); -	if(png_sig_cmp(header, 0, 8)) { -		throw(std::runtime_error("Invalid PNG file")); -	} -	png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0); -	if(!png_ptr) { -		throw(std::runtime_error("LibPNG Error (png_ptr)")); -	} -	png_infop info_ptr = png_create_info_struct(png_ptr); -	if(!info_ptr) { -		throw(std::runtime_error("LibPNG Error (info_ptr)")); -	} -	png_infop end_info = png_create_info_struct(png_ptr); -	if(!end_info) { -		throw(std::runtime_error("LibPNG Error (end_info)")); -	} -	if (setjmp(png_jmpbuf(png_ptr))) { -		throw(std::runtime_error("LibPNG Error")); -	} -	png_init_io(png_ptr, file); -	png_set_sig_bytes(png_ptr, 8); -	png_read_png(png_ptr, info_ptr, 0, 0); -	png_bytep* row_pointers = png_get_rows(png_ptr, info_ptr); -	width = png_get_image_width(png_ptr, info_ptr); -	height = png_get_image_height(png_ptr, info_ptr); -	data = new unsigned char[width * height * 4]; -	for(int y = 0; y < height; y++) { -		for(int x = 0; x < width * 4; x++) { -			data[x + y*width*4] = row_pointers[y][x]; -		} -	} -	build(); -	png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); -} diff --git a/texturepng.h b/texturepng.h deleted file mode 100755 index 9236d39..0000000 --- a/texturepng.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _TEXTUREPNG_H_ -#define _TEXTUREPNG_H_ -#include "texture.h" -class TexturePNG : public Texture { -	public: -		TexturePNG(const char* filename); -}; -#endif // _TEXTUREPNG_H_ diff --git a/texturesdl.cpp b/texturesdl.cpp deleted file mode 100755 index 8e112ef..0000000 --- a/texturesdl.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include <iostream> -#include <stdexcept> -#include <SDL/SDL_image.h> -#include "texturesdl.h" - -TextureSDL::TextureSDL(const char* filename) { -	SDL_Surface* image = IMG_Load(filename); -	 -	width = image->w; -	height = image->h; -	byte_per_pixel = image->format->BytesPerPixel; -	data = (unsigned char*)image->pixels; -	 -	build(); -	 -	SDL_FreeSurface(image); -} diff --git a/texturesdl.h b/texturesdl.h deleted file mode 100755 index 6b2eff2..0000000 --- a/texturesdl.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _TEXTURESDL_H_ -#define _TEXTURESDL_H_ -#include "texture.h" -class TextureSDL : public Texture { -	public: -		TextureSDL(const char* filename); -}; -#endif // _TEXTURESDL_H_  | 
