diff --git a/build b/build index 30c25ed1..49c29fef 160000 --- a/build +++ b/build @@ -1 +1 @@ -Subproject commit 30c25ed15b4eb6b9a51547b0c91509804ad9c2ec +Subproject commit 49c29fefbd17e2c540b190da006e574576f22b30 diff --git a/external/airtaudio b/external/airtaudio index 7ea04602..c35dbe04 160000 --- a/external/airtaudio +++ b/external/airtaudio @@ -1 +1 @@ -Subproject commit 7ea04602a2cbf9b2ae26ff7ba1d338d773a413db +Subproject commit c35dbe04f4cca044ce2f5288254158b212bf3b36 diff --git a/external/date/date/date.cpp b/external/date/date/date.cpp index de2a8e0d..e70786a0 100644 --- a/external/date/date/date.cpp +++ b/external/date/date/date.cpp @@ -7,13 +7,23 @@ */ #include -#ifdef __TARGET_OS__IOs -#define BUILD_YEAR 1070 -#define BUILD_MONTH 1 -#define BUILD_DAY 1 -#define BUILD_HOUR 0 -#define BUILD_MINUTE 0 -#define BUILD_SECOND 0 +#ifndef BUILD_YEAR + #define BUILD_YEAR 1070 +#endif +#ifndef BUILD_MONTH + #define BUILD_MONTH 1 +#endif +#ifndef BUILD_DAY + #define BUILD_DAY 1 +#endif +#ifndef BUILD_HOUR + #define BUILD_HOUR 0 +#endif +#ifndef BUILD_MINUTE + #define BUILD_MINUTE 0 +#endif +#ifndef BUILD_SECOND + #define BUILD_SECOND 0 #endif int32_t date::getYear(void) { diff --git a/external/etk b/external/etk index 31f670a7..e730ba43 160000 --- a/external/etk +++ b/external/etk @@ -1 +1 @@ -Subproject commit 31f670a70b7eac171462abdf318ae251dc946fc1 +Subproject commit e730ba434e856046ca4c8c1c5c98b960ba482350 diff --git a/external/ewolsa b/external/ewolsa index 143d319c..2297f5a5 160000 --- a/external/ewolsa +++ b/external/ewolsa @@ -1 +1 @@ -Subproject commit 143d319c9175d38b5cf009bb228361b67023e452 +Subproject commit 2297f5a5e60ee2deab32938e8ffc0748d3636f1d diff --git a/external/ogg b/external/ogg index 841f4079..e05a0628 160000 --- a/external/ogg +++ b/external/ogg @@ -1 +1 @@ -Subproject commit 841f407905ad4f2d3434c20c4f3b4b4eec9ebdeb +Subproject commit e05a06288ad9f91541a2c06729c00e764e89a568 diff --git a/sources/ewol/context/IOs/OpenglView.h b/sources/ewol/context/IOs/OpenglView.h index 962eedc7..cc039d1e 100644 --- a/sources/ewol/context/IOs/OpenglView.h +++ b/sources/ewol/context/IOs/OpenglView.h @@ -8,8 +8,8 @@ #import #import -#import -#import +#include +#include /* This class wraps the CAEAGLLayer from CoreAnimation into a convenient UIView subclass. @@ -19,11 +19,14 @@ @interface OpenglView : UIView { @private + CAEAGLLayer* _eaglLayer; /* The pixel dimensions of the backbuffer */ GLint backingWidth; GLint backingHeight; - EAGLContext *context; + EAGLContext *_context; + GLuint _colorRenderBuffer; + GLuint _depthRenderBuffer; /* OpenGL names for the renderbuffer and framebuffers used to render to this view */ GLuint viewRenderbuffer, viewFramebuffer; @@ -37,7 +40,7 @@ CGPoint touchLocation; } -@property NSTimeInterval animationInterval; +@property (nonatomic) NSTimeInterval animationInterval; - (void)startAnimation; - (void)stopAnimation; diff --git a/sources/ewol/context/IOs/OpenglView.mm b/sources/ewol/context/IOs/OpenglView.mm index deb782c4..65364735 100644 --- a/sources/ewol/context/IOs/OpenglView.mm +++ b/sources/ewol/context/IOs/OpenglView.mm @@ -8,6 +8,11 @@ #import #import #include +#include + + +#include +#include #import "OpenglView.h" @@ -20,8 +25,6 @@ @property (nonatomic, retain) EAGLContext *context; @property (nonatomic, assign) NSTimer *animationTimer; -- (BOOL) createFramebuffer; -- (void) destroyFramebuffer; @end @@ -38,43 +41,190 @@ return [CAEAGLLayer class]; } -//Created GlView -- (id)initWithFrame:(CGRect)frame { - if ((self = [super initWithFrame:frame])) { - // Get the layer - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - - eaglLayer.opaque = YES; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; - - context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; - - if (!context || ![EAGLContext setCurrentContext:context]) { - //[self release]; - return nil; - } - - animationInterval = 1.0 / 60.0; - //self.bounds - float width = [self frame].size.width; - float height = [self frame].size.height; - IOs::resize(width,height); - } - return self; +- (NSString *) platform{ + size_t size; + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = (char*)malloc(size); + sysctlbyname("hw.machine", machine, &size, NULL, 0); + NSString *platform = [NSString stringWithUTF8String:machine]; + free(machine); + return platform; +} + +- (NSString *) platformString{ + NSString *platform = [self platform]; + if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; + if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; + if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; + if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; + if ([platform isEqualToString:@"iPhone3,3"]) return @"Verizon iPhone 4"; + if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; + if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)"; + if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)"; + if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)"; + if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)"; + if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)"; + if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; + if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; + if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; + if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; + if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G"; + if ([platform isEqualToString:@"iPad1,1"]) return @"iPad"; + if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; + if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; + if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; + if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)"; + if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)"; + if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)"; + if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)"; + if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (GSM)"; + if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; + if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)"; + if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)"; + if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)"; + if ([platform isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (WiFi)"; + if ([platform isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)"; + if ([platform isEqualToString:@"i386"]) return @"Simulator"; + if ([platform isEqualToString:@"x86_64"]) return @"Simulator"; + return platform; +} +- (float)getScreenPPP { + NSString *platform = [self platform]; + if ([platform isEqualToString:@"iPhone1,1"]) return 326.0f; //@"iPhone 1G"; + if ([platform isEqualToString:@"iPhone1,2"]) return 326.0f; //@"iPhone 3G"; + if ([platform isEqualToString:@"iPhone2,1"]) return 326.0f; //@"iPhone 3GS"; + if ([platform isEqualToString:@"iPhone3,1"]) return 326.0f; //@"iPhone 4"; + if ([platform isEqualToString:@"iPhone3,3"]) return 326.0f; //@"Verizon iPhone 4"; + if ([platform isEqualToString:@"iPhone4,1"]) return 326.0f; //@"iPhone 4S"; + if ([platform isEqualToString:@"iPhone5,1"]) return 326.0f; //@"iPhone 5 (GSM)"; + if ([platform isEqualToString:@"iPhone5,2"]) return 326.0f; //@"iPhone 5 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPhone5,3"]) return 326.0f; //@"iPhone 5c (GSM)"; + if ([platform isEqualToString:@"iPhone5,4"]) return 326.0f; //@"iPhone 5c (GSM+CDMA)"; + if ([platform isEqualToString:@"iPhone6,1"]) return 326.0f; //@"iPhone 5s (GSM)"; + if ([platform isEqualToString:@"iPhone6,2"]) return 326.0f; //@"iPhone 5s (GSM+CDMA)"; + if ([platform isEqualToString:@"iPod1,1"]) return 326.0f; //@"iPod Touch 1G"; + if ([platform isEqualToString:@"iPod2,1"]) return 326.0f; //@"iPod Touch 2G"; + if ([platform isEqualToString:@"iPod3,1"]) return 326.0f; //@"iPod Touch 3G"; + if ([platform isEqualToString:@"iPod4,1"]) return 326.0f; //@"iPod Touch 4G"; + if ([platform isEqualToString:@"iPod5,1"]) return 326.0f; //@"iPod Touch 5G"; + if ([platform isEqualToString:@"iPad1,1"]) return 264.0f; //@"iPad"; + if ([platform isEqualToString:@"iPad2,1"]) return 264.0f; //@"iPad 2 (WiFi)"; + if ([platform isEqualToString:@"iPad2,2"]) return 264.0f; //@"iPad 2 (GSM)"; + if ([platform isEqualToString:@"iPad2,3"]) return 264.0f; //@"iPad 2 (CDMA)"; + if ([platform isEqualToString:@"iPad2,4"]) return 264.0f; //@"iPad 2 (WiFi)"; + if ([platform isEqualToString:@"iPad2,5"]) return 163.0f; //@"iPad Mini (WiFi)"; + if ([platform isEqualToString:@"iPad2,6"]) return 163.0f; //@"iPad Mini (GSM)"; + if ([platform isEqualToString:@"iPad2,7"]) return 163.0f; //@"iPad Mini (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad3,1"]) return 264.0f; //@"iPad 3 (WiFi)"; + if ([platform isEqualToString:@"iPad3,2"]) return 264.0f; //@"iPad 3 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad3,3"]) return 264.0f; //@"iPad 3 (GSM)"; + if ([platform isEqualToString:@"iPad3,4"]) return 264.0f; //@"iPad 4 (WiFi)"; + if ([platform isEqualToString:@"iPad3,5"]) return 264.0f; //@"iPad 4 (GSM)"; + if ([platform isEqualToString:@"iPad3,6"]) return 264.0f; //@"iPad 4 (GSM+CDMA)"; + if ([platform isEqualToString:@"iPad4,1"]) return 264.0f; //@"iPad Air (WiFi)"; + if ([platform isEqualToString:@"iPad4,2"]) return 264.0f; //@"iPad Air (Cellular)"; + if ([platform isEqualToString:@"iPad4,4"]) return 326.0f; //@"iPad mini 2G (WiFi)"; + if ([platform isEqualToString:@"iPad4,5"]) return 326.0f; //@"iPad mini 2G (Cellular)"; + if ([platform isEqualToString:@"i386"]) return 326.0f; //@"Simulator"; + if ([platform isEqualToString:@"x86_64"]) return 326.0f; //@"Simulator"; + return 326.0f; +} + +- (void)configureAspectRatio { + CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGFloat screenScale = [[UIScreen mainScreen] scale]; + CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale); + + NSLog(@"**** screen size : %fx%f\n", screenSize.width, screenSize.height); + float ratio = [self getScreenPPP]; + NSLog(@"**** pixel ratio : %f ppp \n", ratio); + ewol::Dimension::setPixelRatio(vec2(1.0f/ratio, 1.0f/ratio), ewol::Dimension::Inch); + IOs::resize(screenSize.width, screenSize.height); + +} +- (void)setupLayer { + _eaglLayer = (CAEAGLLayer*) self.layer; + _eaglLayer.opaque = YES; +} + +- (void)setupContext { + EAGLRenderingAPI api = kEAGLRenderingAPIOpenGLES2; + _context = [[EAGLContext alloc] initWithAPI:api]; + if (!_context) { + NSLog(@"Failed to initialize OpenGLES 2.0 context"); + exit(1); + } + + if (![EAGLContext setCurrentContext:_context]) { + NSLog(@"Failed to set current OpenGL context"); + exit(1); + } +} + + +- (void)setupRenderBuffer { + glGenRenderbuffers(1, &_colorRenderBuffer); + glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer); + [_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer]; +} + +- (void)setupDepthBuffer { + glGenRenderbuffers(1, &_depthRenderBuffer); + glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBuffer); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, self.frame.size.width, self.frame.size.height); +} + +- (void)setupFrameBuffer { + GLuint framebuffer; + glGenFramebuffers(1, &framebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, _colorRenderBuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBuffer); +} + +- (void)render:(CADisplayLink*)displayLink { + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + + glClearColor(0, 104.0/255.0, 55.0/255.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + IOs::draw(true); + NSLog(@"draw..."); + [_context presentRenderbuffer:GL_RENDERBUFFER]; +} + + +- (void)setupDisplayLink { + CADisplayLink* displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(render:)]; + [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; +} + +- (id)initWithFrame:(CGRect)frame +{ + animationInterval = 1.0 / 60.0; + self = [super initWithFrame:frame]; + if (self) { + [self configureAspectRatio]; + [self setupLayer]; + [self setupContext]; + [self setupDepthBuffer]; + [self setupRenderBuffer]; + [self setupFrameBuffer]; + [self setupDisplayLink]; + } + return self; } - (void)drawView { //setting up the draw content - [EAGLContext setCurrentContext:context]; - glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); - + [EAGLContext setCurrentContext:_context]; // Open GL draw : ... IOs::draw(true); glFlush(); - glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); - //show the render buffer - [context presentRenderbuffer:GL_RENDERBUFFER_OES]; } @@ -86,67 +236,32 @@ - (void)layoutSubviews { [EAGLContext setCurrentContext:context]; - [self destroyFramebuffer]; - [self createFramebuffer]; [self drawView]; } -- (BOOL)createFramebuffer { - - glGenFramebuffersOES(1, &viewFramebuffer); - glGenRenderbuffersOES(1, &viewRenderbuffer); - - glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); - glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); - [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer]; - glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer); - - glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth); - glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight); - - if (USE_DEPTH_BUFFER) { - glGenRenderbuffersOES(1, &depthRenderbuffer); - glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); - glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight); - glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer); - } - - if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) { - NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES)); - return NO; - } - - return YES; -} - - -- (void)destroyFramebuffer { - - glDeleteFramebuffersOES(1, &viewFramebuffer); - viewFramebuffer = 0; - glDeleteRenderbuffersOES(1, &viewRenderbuffer); - viewRenderbuffer = 0; - - if(depthRenderbuffer) { - glDeleteRenderbuffersOES(1, &depthRenderbuffer); - depthRenderbuffer = 0; - } -} - - - (void)startAnimation { - self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES]; + NSLog(@"start annimation\n"); + /* + self.animationTimer = [NSTimer + scheduledTimerWithTimeInterval:animationInterval + target:self + selector:@selector(drawView) + userInfo:nil + repeats:YES]; + */ } - (void)stopAnimation { + NSLog(@"Stop annimation\n"); self.animationTimer = nil; } - (void)setAnimationTimer:(NSTimer *)newTimer { - [animationTimer invalidate]; + NSLog(@"new timer\n"); + [animationTimer invalidate]; animationTimer = newTimer; } diff --git a/sources/ewol/resource/TexturedFont.cpp b/sources/ewol/resource/TexturedFont.cpp index 2094be46..da4e088b 100644 --- a/sources/ewol/resource/TexturedFont.cpp +++ b/sources/ewol/resource/TexturedFont.cpp @@ -45,6 +45,8 @@ etk::CCout& ewol::operator <<(etk::CCout& _os, enum ewol::font::mode _obj) { ewol::resource::TexturedFont::TexturedFont(const std::string& _fontName) : ewol::resource::Texture(_fontName) { addObjectType("ewol::resource::TexturedFont"); + EWOL_DEBUG("Load font : '" << _fontName << "'" ); + m_font[0] = NULL; m_font[1] = NULL; m_font[2] = NULL; @@ -82,6 +84,10 @@ ewol::resource::TexturedFont::TexturedFont(const std::string& _fontName) : } } std::string localName(_fontName, 0, (tmpPos - tmpData)); + if (tmpSize>400) { + EWOL_ERROR("Font size too big ==> limit at 400 when exxeed ==> error : " << tmpSize << "==>30"); + tmpSize = 30; + } m_size = tmpSize; std::vector folderList; @@ -207,6 +213,7 @@ ewol::resource::TexturedFont::TexturedFont(const std::string& _fontName) : addGlyph(0); // by default we set only the first AINSI char availlable for (int32_t iii=0x20; iii<0x7F; iii++) { + EWOL_VERBOSE("Add clyph :" << iii); addGlyph(iii); } flush();