summaryrefslogtreecommitdiff
path: root/macosx/PcsxrMemoryObject.m
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
commitd6942932d64a02aa92b1e04e91f6126f33fdb05e (patch)
tree7cad698308e39abc2b0e1c71674c610ec3ce74dd /macosx/PcsxrMemoryObject.m
parentb8d0d24d56dbc0ee64f4ec9a72ab917604d8109d (diff)
downloadpcsxr-d6942932d64a02aa92b1e04e91f6126f33fdb05e.tar.gz
OS X: Move source files to their own folder.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@90999 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/PcsxrMemoryObject.m')
-rwxr-xr-xmacosx/PcsxrMemoryObject.m323
1 files changed, 0 insertions, 323 deletions
diff --git a/macosx/PcsxrMemoryObject.m b/macosx/PcsxrMemoryObject.m
deleted file mode 100755
index 7d11b6f8..00000000
--- a/macosx/PcsxrMemoryObject.m
+++ /dev/null
@@ -1,323 +0,0 @@
-//
-// PcsxrMemoryObject.m
-// Pcsxr
-//
-// Created by Charles Betts on 11/23/11.
-// Copyright (c) 2011 __MyCompanyName__. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "PcsxrMemoryObject.h"
-
-NSString *const memoryAnimateTimerKey = @"PCSXR Memory Card Image Animate";
-
-@interface PcsxrMemoryObject ()
-@property (readwrite, strong) NSString *englishName;
-@property (readwrite, strong) NSString *sjisName;
-@property (readwrite, strong) NSString *memName;
-@property (readwrite, strong) NSString *memID;
-@property (readwrite) uint8_t startingIndex;
-@property (readwrite) uint8_t blockSize;
-
-@property (nonatomic) NSInteger memImageIndex;
-@property (strong) NSArray *memImages;
-@property (readwrite) PCSXRMemFlags flagNameIndex;
-@end
-
-@implementation PcsxrMemoryObject
-
-+ (NSArray *)imagesFromMcd:(McdBlock *)block
-{
- NSMutableArray *imagesArray = [[NSMutableArray alloc] initWithCapacity:block->IconCount];
- for (int i = 0; i < block->IconCount; i++) {
- NSImage *memImage;
- {
- NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:16 pixelsHigh:16 bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:0 bitsPerPixel:0];
-
- short *icon = block->Icon;
-
- int x, y, c, v, r, g, b;
- for (v = 0; v < 256; v++) {
- x = (v % 16);
- y = (v / 16);
- c = icon[(i * 256) + v];
- r = (c & 0x001f) << 3;
- g = ((c & 0x03e0) >> 5) << 3;
- b = ((c & 0x7c00) >> 10) << 3;
- [imageRep setColor:[NSColor colorWithCalibratedRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0] atX:x y:y];
- }
- memImage = [[NSImage alloc] init];
- [memImage addRepresentation:imageRep];
- [memImage setSize:NSMakeSize(32, 32)];
- }
- [imagesArray addObject:memImage];
- }
- return [NSArray arrayWithArray:imagesArray];
-}
-
-static NSString *MemLabelDeleted;
-static NSString *MemLabelFree;
-static NSString *MemLabelUsed;
-static NSString *MemLabelLink;
-static NSString *MemLabelEndLink;
-
-+ (void)initialize
-{
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSBundle *mainBundle = [NSBundle mainBundle];
- MemLabelDeleted = [[mainBundle localizedStringForKey:@"MemCard_Deleted" value:@"" table:nil] copy];
- MemLabelFree = [[mainBundle localizedStringForKey:@"MemCard_Free" value:@"" table:nil] copy];
- MemLabelUsed = [[mainBundle localizedStringForKey:@"MemCard_Used" value:@"" table:nil] copy];
- MemLabelLink = [[mainBundle localizedStringForKey:@"MemCard_Link" value:@"" table:nil] copy];
- MemLabelEndLink = [[mainBundle localizedStringForKey:@"MemCard_EndLink" value:@"" table:nil] copy];
- });
-}
-
-+ (NSString*)memoryLabelFromFlag:(PCSXRMemFlags)flagNameIndex
-{
- switch (flagNameIndex) {
- default:
- case memFlagFree:
- return MemLabelFree;
- break;
-
- case memFlagEndLink:
- return MemLabelEndLink;
- break;
-
- case memFlagLink:
- return MemLabelLink;
- break;
-
- case memFlagUsed:
- return MemLabelUsed;
- break;
-
- case memFlagDeleted:
- return MemLabelDeleted;
- break;
- }
-}
-
-+ (NSImage *)blankImage
-{
- static NSImage *imageBlank = nil;
- if (imageBlank == nil) {
- NSRect imageRect = NSMakeRect(0, 0, 32, 32);
- imageBlank = [[NSImage alloc] initWithSize:imageRect.size];
- [imageBlank lockFocus];
- [[NSColor blackColor] set];
- [NSBezierPath fillRect:imageRect];
- [imageBlank unlockFocus];
- }
- return imageBlank;
-}
-
-+ (PCSXRMemFlags)memFlagsFromBlockFlags:(unsigned char)blockFlags
-{
- if ((blockFlags & 0xF0) == 0xA0) {
- if ((blockFlags & 0xF) >= 1 && (blockFlags & 0xF) <= 3)
- return memFlagDeleted;
- else
- return memFlagFree;
- } else if ((blockFlags & 0xF0) == 0x50) {
- if ((blockFlags & 0xF) == 0x1)
- return memFlagUsed;
- else if ((blockFlags & 0xF) == 0x2)
- return memFlagLink;
- else if ((blockFlags & 0xF) == 0x3)
- return memFlagEndLink;
- } else
- return memFlagFree;
-
- //Xcode complains unless we do this...
- NSLog(@"Unknown flag %x", blockFlags);
- return memFlagFree;
-}
-
-- (id)initWithMcdBlock:(McdBlock *)infoBlock startingIndex:(uint8_t)startIdx size:(uint8_t)memSize
-{
- if (self = [super init]) {
- self.startingIndex = startIdx;
- self.blockSize = memSize;
- self.flagNameIndex = [PcsxrMemoryObject memFlagsFromBlockFlags:infoBlock->Flags];
- if (self.flagNameIndex == memFlagFree) {
- self.memImages = @[];
- self.memImageIndex = -1;
- self.englishName = self.sjisName = @"Free block";
- self.memID = self.memName = @"";
- } else {
- self.englishName = @(infoBlock->Title);
- self.sjisName = [NSString stringWithCString:infoBlock->sTitle encoding:NSShiftJISStringEncoding];
-
- if ([englishName isEqualToString:sjisName]) {
-#if 0
- if (![englishName isEqualToString:@""])
- NSLog(@"English name and sjis name are the same: %@. Replacing the sjis string with the English string.", englishName);
-#endif
- self.sjisName = self.englishName;
- }
- @autoreleasepool {
- self.memImages = [PcsxrMemoryObject imagesFromMcd:infoBlock];
- }
-
- if ([memImages count] == 0) {
- self.memImageIndex = -1;
- } else if ([memImages count] == 1) {
- self.memImageIndex = 0;
- } else {
- self.memImageIndex = 0;
- [[NSNotificationCenter defaultCenter] addObserverForName:memoryAnimateTimerKey object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
- NSInteger index = memImageIndex;
- if (++index >= [memImages count]) {
- index = 0;
- }
- self.memImageIndex = index;
- }];
- }
- self.memName = @(infoBlock->Name);
- self.memID = @(infoBlock->ID);
- }
- }
- return self;
-}
-
-#pragma mark - Property Synthesizers
-@synthesize englishName;
-@synthesize sjisName;
-@synthesize memImageIndex;
-- (void)setMemImageIndex:(NSInteger)theMemImageIndex
-{
- [self willChangeValueForKey:@"memImage"];
- memImageIndex = theMemImageIndex;
- [self didChangeValueForKey:@"memImage"];
-}
-
-@synthesize memName;
-@synthesize memID;
-@synthesize memImages;
-@synthesize flagNameIndex;
-@synthesize blockSize;
-@synthesize startingIndex;
-
-#pragma mark Non-synthesized Properties
-- (unsigned)memIconCount
-{
- return (unsigned)[memImages count];
-}
-
-- (NSImage*)memImage
-{
- if (memImageIndex == -1) {
- return [PcsxrMemoryObject blankImage];
- }
- return memImages[memImageIndex];
-}
-
-- (NSString*)flagName
-{
- return [PcsxrMemoryObject memoryLabelFromFlag:flagNameIndex];
-}
-
-static inline void SetupAttrStr(NSMutableAttributedString *mutStr, NSColor *txtclr)
-{
- NSRange wholeStrRange = NSMakeRange(0, mutStr.string.length);
- [mutStr addAttribute:NSFontAttributeName value:[NSFont userFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]] range:wholeStrRange];
- [mutStr addAttribute:NSForegroundColorAttributeName value:txtclr range:wholeStrRange];
- [mutStr setAlignment:NSCenterTextAlignment range:wholeStrRange];
-}
-
-- (NSAttributedString*)attributedFlagName
-{
- static NSAttributedString *attribMemLabelDeleted;
- static NSAttributedString *attribMemLabelFree;
- static NSAttributedString *attribMemLabelUsed;
- static NSAttributedString *attribMemLabelLink;
- static NSAttributedString *attribMemLabelEndLink;
-
- static dispatch_once_t attrStrSetOnceToken;
- dispatch_once(&attrStrSetOnceToken, ^{
- NSMutableAttributedString *tmpStr = [[NSMutableAttributedString alloc] initWithString:MemLabelFree];
- SetupAttrStr(tmpStr, [NSColor greenColor]);
- attribMemLabelFree = [tmpStr copy];
-
-#ifdef DEBUG
- tmpStr = [[NSMutableAttributedString alloc] initWithString:MemLabelEndLink];
- SetupAttrStr(tmpStr, [NSColor blueColor]);
- attribMemLabelEndLink = [tmpStr copy];
-
- tmpStr = [[NSMutableAttributedString alloc] initWithString:MemLabelLink];
- SetupAttrStr(tmpStr, [NSColor blueColor]);
- attribMemLabelLink = [tmpStr copy];
-
- tmpStr = [[NSMutableAttributedString alloc] initWithString:MemLabelUsed];
- SetupAttrStr(tmpStr, [NSColor controlTextColor]);
- attribMemLabelUsed = [tmpStr copy];
-#else
- tmpStr = [[NSMutableAttributedString alloc] initWithString:@"Multi-save"];
- SetupAttrStr(tmpStr, [NSColor blueColor]);
- attribMemLabelEndLink = [tmpStr copy];
-
- //tmpStr = [[NSMutableAttributedString alloc] initWithString:@"Multi-save"];
- //SetupAttrStr(tmpStr, [NSColor blueColor]);
- //attribMemLabelLink = [tmpStr copy];
- //RELEASEOBJ(tmpStr);
- attribMemLabelLink = attribMemLabelEndLink;
-
- //display nothing
- attribMemLabelUsed = [[NSAttributedString alloc] initWithString:@""];
-#endif
-
- tmpStr = [[NSMutableAttributedString alloc] initWithString:MemLabelDeleted];
- SetupAttrStr(tmpStr, [NSColor redColor]);
- attribMemLabelDeleted = [tmpStr copy];
- });
-
- switch (flagNameIndex) {
- default:
- case memFlagFree:
- return attribMemLabelFree;
- break;
-
- case memFlagEndLink:
- return attribMemLabelEndLink;
- break;
-
- case memFlagLink:
- return attribMemLabelLink;
- break;
-
- case memFlagUsed:
- return attribMemLabelUsed;
- break;
-
- case memFlagDeleted:
- return attribMemLabelDeleted;
- break;
- }
-}
-
-- (BOOL)isBiggerThanOne
-{
- if (flagNameIndex == memFlagFree) {
- //Always show the size of the free blocks
- return YES;
- } else {
- return blockSize != 1;
- }
-}
-
-#pragma mark -
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"%@ (%@): Name: %@ ID: %@, type: %@ start: %i size: %i", englishName, sjisName, memName, memID, self.flagName, startingIndex, blockSize];
-}
-
-@end