mirror of
https://github.com/rive-app/rive-ios.git
synced 2026-01-18 17:11:28 +01:00
few bits to sort out - [x] make our mix of simulator/emulator consistent, settling on emulator - [x] passing the factory in works great for just in time asset decoding, but its not amazing when you want to decode ahead of time. - [x] couple of places left to pass this function signature through. (Question) is there a neater way to get this done, feels a bit like we are going back to parameter explosion a bit? - [x] should do a few examples, i think the complexity grows quite a bit in this one as you add caching, or callbacks - [x] should get the cached images/fonts to draw on init as well, either warming up cache, or jitting - [x] examples loading assets from the bundle (also there seem to be actual asset things too? should we use those?!) - [x] add test - [x] re-add "preview" project & rev the preview project once this has been deployed. (do this after new ios deploy) - [x] fix up race condition (see comment) https://github.com/rive-app/rive/assets/1216025/2c14330f-e8a4-481b-bc27-4807cabe3b82 (simple example, both swift ui and standard)  Diffs= fabb7f97f Ios out of band (#6232) Co-authored-by: Gordon Hayes <pggordonhayes@gmail.com> Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
92 lines
2.0 KiB
Plaintext
92 lines
2.0 KiB
Plaintext
//
|
|
// RiveFileAsset.m
|
|
// RiveRuntime
|
|
//
|
|
// Created by Maxwell Talbot on 07/11/2023.
|
|
// Copyright © 2023 Rive. All rights reserved.
|
|
//
|
|
|
|
#import <Rive.h>
|
|
#import <RivePrivateHeaders.h>
|
|
#import <RiveFileAsset.h>
|
|
|
|
@implementation RiveFileAsset
|
|
{
|
|
const rive::FileAsset* instance;
|
|
}
|
|
- (const rive::FileAsset*)getInstance
|
|
{
|
|
return instance;
|
|
}
|
|
|
|
- (instancetype)initWithFileAsset:(const rive::FileAsset*)fileAsset
|
|
{
|
|
if (self = [super init])
|
|
{
|
|
instance = (rive::FileAsset* _Nonnull)fileAsset;
|
|
return self;
|
|
}
|
|
else
|
|
{
|
|
return nil;
|
|
}
|
|
}
|
|
|
|
- (nonnull NSString*)cdnBaseUrl
|
|
{
|
|
std::string str = instance->cdnBaseUrl();
|
|
return [NSString stringWithCString:str.c_str() encoding:[NSString defaultCStringEncoding]];
|
|
}
|
|
|
|
- (nonnull NSString*)cdnUuid
|
|
{
|
|
std::string str = instance->cdnUuidStr();
|
|
return [NSString stringWithCString:str.c_str() encoding:[NSString defaultCStringEncoding]];
|
|
}
|
|
|
|
- (nonnull NSString*)fileExtension
|
|
{
|
|
std::string str = instance->fileExtension();
|
|
return [NSString stringWithCString:str.c_str() encoding:[NSString defaultCStringEncoding]];
|
|
}
|
|
|
|
- (nonnull NSString*)name
|
|
{
|
|
std::string str = instance->name();
|
|
return [NSString stringWithCString:str.c_str() encoding:[NSString defaultCStringEncoding]];
|
|
}
|
|
|
|
- (nonnull NSString*)uniqueFilename
|
|
{
|
|
std::string str = instance->uniqueFilename();
|
|
return [NSString stringWithCString:str.c_str() encoding:[NSString defaultCStringEncoding]];
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation RiveImageAsset
|
|
- (instancetype)initWithFileAsset:(const rive::ImageAsset*)fileAsset
|
|
{
|
|
return [super initWithFileAsset:fileAsset];
|
|
}
|
|
|
|
- (void)renderImage:(RiveRenderImage*)image
|
|
{
|
|
|
|
((rive::ImageAsset*)[self getInstance])->renderImage([image instance]);
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation RiveFontAsset
|
|
- (instancetype)initWithFileAsset:(const rive::FontAsset*)fileAsset
|
|
{
|
|
return [super initWithFileAsset:fileAsset];
|
|
}
|
|
|
|
- (void)font:(RiveFont*)font
|
|
{
|
|
((rive::FontAsset*)[self getInstance])->font([font instance]);
|
|
}
|
|
@end
|