mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[ion/simulator] Unify iOS/macOS image loading
This commit is contained in:
@@ -1,8 +1,5 @@
|
|||||||
ion_src += $(addprefix ion/src/simulator/ios/, \
|
|
||||||
platform_images.mm \
|
|
||||||
)
|
|
||||||
|
|
||||||
ion_src += $(addprefix ion/src/simulator/shared/, \
|
ion_src += $(addprefix ion/src/simulator/shared/, \
|
||||||
|
apple/platform_images.mm \
|
||||||
apple/platform_language.mm \
|
apple/platform_language.mm \
|
||||||
dummy/haptics_enabled.cpp \
|
dummy/haptics_enabled.cpp \
|
||||||
dummy/journal.cpp \
|
dummy/journal.cpp \
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
#include "../shared/platform.h"
|
|
||||||
#include <SDL.h>
|
|
||||||
#include <UIKit/UIKit.h>
|
|
||||||
|
|
||||||
namespace Ion {
|
|
||||||
namespace Simulator {
|
|
||||||
namespace Platform {
|
|
||||||
|
|
||||||
SDL_Texture * loadImage(SDL_Renderer * renderer, const char * identifier) {
|
|
||||||
CGImageRef cgImage = [[UIImage imageNamed:[NSString stringWithUTF8String:identifier]] CGImage];
|
|
||||||
if (cgImage == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
size_t width = CGImageGetWidth(cgImage);
|
|
||||||
size_t height = CGImageGetHeight(cgImage);
|
|
||||||
|
|
||||||
|
|
||||||
size_t bytesPerPixel = 4;
|
|
||||||
size_t bytesPerRow = bytesPerPixel * width;
|
|
||||||
size_t bitsPerComponent = 8;
|
|
||||||
|
|
||||||
size_t size = height * width * bytesPerPixel;
|
|
||||||
void * bitmapData = malloc(size);
|
|
||||||
memset(bitmapData, 0, size);
|
|
||||||
|
|
||||||
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
|
|
||||||
CGContextRef context = CGBitmapContextCreate(
|
|
||||||
bitmapData, width, height,
|
|
||||||
bitsPerComponent, bytesPerRow, colorSpace,
|
|
||||||
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
|
|
||||||
);
|
|
||||||
|
|
||||||
CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
|
|
||||||
|
|
||||||
CGContextRelease(context);
|
|
||||||
CGColorSpaceRelease(colorSpace);
|
|
||||||
|
|
||||||
SDL_Texture * texture = SDL_CreateTexture(
|
|
||||||
renderer,
|
|
||||||
SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
SDL_TEXTUREACCESS_STATIC,
|
|
||||||
width,
|
|
||||||
height
|
|
||||||
);
|
|
||||||
|
|
||||||
SDL_UpdateTexture(
|
|
||||||
texture,
|
|
||||||
NULL,
|
|
||||||
bitmapData,
|
|
||||||
bytesPerPixel * width
|
|
||||||
);
|
|
||||||
|
|
||||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
|
||||||
|
|
||||||
free(bitmapData);
|
|
||||||
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
ion_src += $(addprefix ion/src/simulator/macos/, \
|
ion_src += $(addprefix ion/src/simulator/macos/, \
|
||||||
platform_files.mm \
|
platform_files.mm \
|
||||||
platform_images.mm \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ion_src += $(addprefix ion/src/simulator/shared/, \
|
ion_src += $(addprefix ion/src/simulator/shared/, \
|
||||||
|
apple/platform_images.mm \
|
||||||
apple/platform_language.mm \
|
apple/platform_language.mm \
|
||||||
dummy/haptics_enabled.cpp \
|
dummy/haptics_enabled.cpp \
|
||||||
dummy/keyboard_callback.cpp \
|
dummy/keyboard_callback.cpp \
|
||||||
|
|||||||
@@ -1,17 +1,27 @@
|
|||||||
#include "../shared/platform.h"
|
#include "../shared/platform.h"
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#if TARGET_OS_MAC
|
||||||
#include <AppKit/AppKit.h>
|
#include <AppKit/AppKit.h>
|
||||||
|
#else
|
||||||
|
#include <UIKit/UIKit.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace Ion {
|
namespace Ion {
|
||||||
namespace Simulator {
|
namespace Simulator {
|
||||||
namespace Platform {
|
namespace Platform {
|
||||||
|
|
||||||
SDL_Texture * loadImage(SDL_Renderer * renderer, const char * identifier) {
|
SDL_Texture * loadImage(SDL_Renderer * renderer, const char * identifier) {
|
||||||
|
CGImageRef cgImage = NULL;
|
||||||
|
#if TARGET_OS_MAC
|
||||||
|
//http://lists.libsdl.org/pipermail/commits-libsdl.org/2016-December/001235.html
|
||||||
|
[[[NSApp windows] firstObject] setColorSpace:[NSColorSpace sRGBColorSpace]];
|
||||||
|
|
||||||
NSImage * nsImage = [NSImage imageNamed:[NSString stringWithUTF8String:identifier]];
|
NSImage * nsImage = [NSImage imageNamed:[NSString stringWithUTF8String:identifier]];
|
||||||
CGImageRef cgImage = [nsImage CGImageForProposedRect:NULL
|
cgImage = [nsImage CGImageForProposedRect:NULL context:NULL hints:0];
|
||||||
context:NULL
|
#else
|
||||||
hints:0];
|
cgImage = [[UIImage imageNamed:[NSString stringWithUTF8String:identifier]] CGImage];
|
||||||
|
#endif
|
||||||
if (cgImage == NULL) {
|
if (cgImage == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user