sorted files list in objc
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
#include <Cocoa/Cocoa.h>
|
#include <Cocoa/Cocoa.h>
|
||||||
#include <CoreVideo/CoreVideo.h>
|
#include <CoreVideo/CoreVideo.h>
|
||||||
#include <OpenGL/OpenGL.h>
|
#include <OpenGL/OpenGL.h>
|
||||||
|
#import "objc_utils.h"
|
||||||
|
|
||||||
@implementation View
|
@implementation View
|
||||||
- (void)async_lock
|
- (void)async_lock
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#import "GameViewController.h"
|
#import "GameViewController.h"
|
||||||
#import <OpenGLES/ES3/glext.h>
|
#import <OpenGLES/ES3/glext.h>
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
#import "objc_utils.h"
|
||||||
|
|
||||||
@interface GameImagePicker : UIImagePickerController
|
@interface GameImagePicker : UIImagePickerController
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -232,6 +232,8 @@
|
|||||||
ADE4911D1F86E65E00FB8E92 /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491111F86D09100FB8E92 /* shapes.cc */; };
|
ADE4911D1F86E65E00FB8E92 /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491111F86D09100FB8E92 /* shapes.cc */; };
|
||||||
ADE4911E1F86E65E00FB8E92 /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491141F86D09100FB8E92 /* sweep_context.cc */; };
|
ADE4911E1F86E65E00FB8E92 /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491141F86D09100FB8E92 /* sweep_context.cc */; };
|
||||||
ADE4911F1F86E65E00FB8E92 /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491131F86D09100FB8E92 /* sweep.cc */; };
|
ADE4911F1F86E65E00FB8E92 /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491131F86D09100FB8E92 /* sweep.cc */; };
|
||||||
|
ADEBA9062069A4F40085AE16 /* objc_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADEBA9052069A4F40085AE16 /* objc_utils.cpp */; };
|
||||||
|
ADEBA9092069A50E0085AE16 /* objc_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADEBA9082069A50E0085AE16 /* objc_utils.cpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
@@ -413,6 +415,10 @@
|
|||||||
ADE491131F86D09100FB8E92 /* sweep.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep.cc; path = libs/poly2tri/poly2tri/sweep/sweep.cc; sourceTree = "<group>"; };
|
ADE491131F86D09100FB8E92 /* sweep.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep.cc; path = libs/poly2tri/poly2tri/sweep/sweep.cc; sourceTree = "<group>"; };
|
||||||
ADE491141F86D09100FB8E92 /* sweep_context.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep_context.cc; path = libs/poly2tri/poly2tri/sweep/sweep_context.cc; sourceTree = "<group>"; };
|
ADE491141F86D09100FB8E92 /* sweep_context.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep_context.cc; path = libs/poly2tri/poly2tri/sweep/sweep_context.cc; sourceTree = "<group>"; };
|
||||||
ADE491151F86D09100FB8E92 /* cdt.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = cdt.cc; path = libs/poly2tri/poly2tri/sweep/cdt.cc; sourceTree = "<group>"; };
|
ADE491151F86D09100FB8E92 /* cdt.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = cdt.cc; path = libs/poly2tri/poly2tri/sweep/cdt.cc; sourceTree = "<group>"; };
|
||||||
|
ADEBA9042069A4F30085AE16 /* objc_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objc_utils.h; path = engine/objc_utils.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
ADEBA9052069A4F40085AE16 /* objc_utils.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = objc_utils.cpp; path = engine/objc_utils.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
ADEBA9072069A50E0085AE16 /* objc_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objc_utils.h; path = engine/objc_utils.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
ADEBA9082069A50E0085AE16 /* objc_utils.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = objc_utils.cpp; path = engine/objc_utils.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -476,6 +482,8 @@
|
|||||||
AD0E5CA11ECC6F2B00C35669 /* Supporting Files */ = {
|
AD0E5CA11ECC6F2B00C35669 /* Supporting Files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
ADEBA9052069A4F40085AE16 /* objc_utils.cpp */,
|
||||||
|
ADEBA9042069A4F30085AE16 /* objc_utils.h */,
|
||||||
AD0E5CA21ECC6F2B00C35669 /* main.cpp */,
|
AD0E5CA21ECC6F2B00C35669 /* main.cpp */,
|
||||||
AD2FEBDA1F94A742002804DD /* main.h */,
|
AD2FEBDA1F94A742002804DD /* main.h */,
|
||||||
);
|
);
|
||||||
@@ -687,6 +695,8 @@
|
|||||||
ADD7D26D1EBF9AE300D5A897 /* Supporting Files */ = {
|
ADD7D26D1EBF9AE300D5A897 /* Supporting Files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
ADEBA9082069A50E0085AE16 /* objc_utils.cpp */,
|
||||||
|
ADEBA9072069A50E0085AE16 /* objc_utils.h */,
|
||||||
ADD7D26E1EBF9AE300D5A897 /* main.m */,
|
ADD7D26E1EBF9AE300D5A897 /* main.m */,
|
||||||
);
|
);
|
||||||
name = "Supporting Files";
|
name = "Supporting Files";
|
||||||
@@ -837,6 +847,7 @@
|
|||||||
AD0E5CB91ECC72AD00C35669 /* node_border.cpp in Sources */,
|
AD0E5CB91ECC72AD00C35669 /* node_border.cpp in Sources */,
|
||||||
AD0E5CC81ECC72AD00C35669 /* node_popup_menu.cpp in Sources */,
|
AD0E5CC81ECC72AD00C35669 /* node_popup_menu.cpp in Sources */,
|
||||||
AD0E5CB71ECC72AD00C35669 /* layout.cpp in Sources */,
|
AD0E5CB71ECC72AD00C35669 /* layout.cpp in Sources */,
|
||||||
|
ADEBA9062069A4F40085AE16 /* objc_utils.cpp in Sources */,
|
||||||
AD0E5CB41ECC72AD00C35669 /* tinyxml2.cpp in Sources */,
|
AD0E5CB41ECC72AD00C35669 /* tinyxml2.cpp in Sources */,
|
||||||
AD0E5CD81ECC72AD00C35669 /* canvas_modes.cpp in Sources */,
|
AD0E5CD81ECC72AD00C35669 /* canvas_modes.cpp in Sources */,
|
||||||
AD0E5CA31ECC6F2B00C35669 /* main.cpp in Sources */,
|
AD0E5CA31ECC6F2B00C35669 /* main.cpp in Sources */,
|
||||||
@@ -978,6 +989,7 @@
|
|||||||
ADBC8C571FAFD05A0094B339 /* node_dialog_cloud.cpp in Sources */,
|
ADBC8C571FAFD05A0094B339 /* node_dialog_cloud.cpp in Sources */,
|
||||||
ADD7D2951EBF9E1C00D5A897 /* bezier.cpp in Sources */,
|
ADD7D2951EBF9E1C00D5A897 /* bezier.cpp in Sources */,
|
||||||
AD1063A21EC7AE92002A525F /* node_panel_brush.cpp in Sources */,
|
AD1063A21EC7AE92002A525F /* node_panel_brush.cpp in Sources */,
|
||||||
|
ADEBA9092069A50E0085AE16 /* objc_utils.cpp in Sources */,
|
||||||
AD0E11A51ECA61B900CDA6BB /* jpgd.cpp in Sources */,
|
AD0E11A51ECA61B900CDA6BB /* jpgd.cpp in Sources */,
|
||||||
ADE491181F86E65D00FB8E92 /* shapes.cc in Sources */,
|
ADE491181F86E65D00FB8E92 /* shapes.cc in Sources */,
|
||||||
ADD7D29E1EBF9E1C00D5A897 /* shape.cpp in Sources */,
|
ADD7D29E1EBF9E1C00D5A897 /* shape.cpp in Sources */,
|
||||||
|
|||||||
@@ -354,6 +354,7 @@ void App::update(float dt)
|
|||||||
rec_timer = 0.f;
|
rec_timer = 0.f;
|
||||||
|
|
||||||
auto data = new uint8_t[width * height * 4];
|
auto data = new uint8_t[width * height * 4];
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
glReadBuffer(GL_BACK);
|
glReadBuffer(GL_BACK);
|
||||||
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||||
{
|
{
|
||||||
|
|||||||
36
engine/objc_utils.cpp
Normal file
36
engine/objc_utils.cpp
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "objc_utils.h"
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
|
||||||
|
|
||||||
|
@implementation PathWithModDate
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation ObjcUtils
|
||||||
|
+ (NSArray*)getFilesAtPathSortedByModificationDate:(NSString*)folderPath
|
||||||
|
{
|
||||||
|
NSArray *allPaths = [NSFileManager.defaultManager contentsOfDirectoryAtPath:folderPath error:nil];
|
||||||
|
|
||||||
|
NSMutableArray *sortedPaths = [NSMutableArray new];
|
||||||
|
for (NSString *path in allPaths) {
|
||||||
|
NSString *fullPath = [folderPath stringByAppendingPathComponent:path];
|
||||||
|
|
||||||
|
NSDictionary *attr = [NSFileManager.defaultManager attributesOfItemAtPath:fullPath error:nil];
|
||||||
|
NSDate *modDate = [attr objectForKey:NSFileModificationDate];
|
||||||
|
|
||||||
|
PathWithModDate *pathWithDate = [[PathWithModDate alloc] init];
|
||||||
|
pathWithDate.path = fullPath;
|
||||||
|
pathWithDate.modDate = modDate;
|
||||||
|
[sortedPaths addObject:pathWithDate];
|
||||||
|
}
|
||||||
|
|
||||||
|
[sortedPaths sortUsingComparator:^(PathWithModDate *path1, PathWithModDate *path2) {
|
||||||
|
// Descending (most recently modified first)
|
||||||
|
return [path2.modDate compare:path1.modDate];
|
||||||
|
}];
|
||||||
|
|
||||||
|
return sortedPaths;
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
#endif
|
||||||
15
engine/objc_utils.h
Normal file
15
engine/objc_utils.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
|
||||||
|
|
||||||
|
@interface PathWithModDate : NSObject
|
||||||
|
@property (strong) NSString *path;
|
||||||
|
@property (strong) NSDate *modDate;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface ObjcUtils : NSObject
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user