Overview
| Comment: | Move some classes out of OFColor.m |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
08cad65b28200e953517dd12a022c0ff |
| User & Date: | js on 2023-08-09 08:57:56 |
| Other Links: | manifest | tags |
Context
|
2023-08-09
| ||
| 09:08 | Add OF_SINGLETON_METHODS (check-in: 36310f6263 user: js tags: trunk) | |
| 08:57 | Move some classes out of OFColor.m (check-in: 08cad65b28 user: js tags: trunk) | |
| 08:25 | More consistent naming for concrete classes (check-in: 6da6276ae7 user: js tags: trunk) | |
Changes
Modified src/Makefile from [eb6b9dbb80] to [c748eda942].
| ︙ | ︙ | |||
178 179 180 181 182 183 184 185 186 187 188 189 190 191 | OFArchiveIRIHandler.m \ OFBase64.m \ OFBitSetCharacterSet.m \ OFBytesValue.m \ OFCRC16.m \ OFCRC32.m \ OFConcreteArray.m \ OFConcreteData.m \ OFConcreteMutableArray.m \ OFConcreteMutableData.m \ OFConcreteSubarray.m \ OFCountedMapTableSet.m \ OFEmbeddedIRIHandler.m \ OFHuffmanTree.m \ | > | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | OFArchiveIRIHandler.m \ OFBase64.m \ OFBitSetCharacterSet.m \ OFBytesValue.m \ OFCRC16.m \ OFCRC32.m \ OFConcreteArray.m \ OFConcreteColor.m \ OFConcreteData.m \ OFConcreteMutableArray.m \ OFConcreteMutableData.m \ OFConcreteSubarray.m \ OFCountedMapTableSet.m \ OFEmbeddedIRIHandler.m \ OFHuffmanTree.m \ |
| ︙ | ︙ | |||
204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
OFRangeValue.m \
OFRectValue.m \
OFSandbox.m \
OFSizeValue.m \
OFStrPTime.m \
OFSubarray.m \
OFSubdata.m \
OFUTF8String.m \
${LIBBASES_M} \
${RUNTIME_AUTORELEASE_M} \
${RUNTIME_INSTANCE_M} \
${UNICODE_M}
SRCS_FILES += OFFileIRIHandler.m
SRCS_SOCKETS += OFAsyncIPSocketConnector.m \
| > | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
OFRangeValue.m \
OFRectValue.m \
OFSandbox.m \
OFSizeValue.m \
OFStrPTime.m \
OFSubarray.m \
OFSubdata.m \
OFTaggedPointerColor.m \
OFUTF8String.m \
${LIBBASES_M} \
${RUNTIME_AUTORELEASE_M} \
${RUNTIME_INSTANCE_M} \
${UNICODE_M}
SRCS_FILES += OFFileIRIHandler.m
SRCS_SOCKETS += OFAsyncIPSocketConnector.m \
|
| ︙ | ︙ |
Modified src/OFColor.m from [dd91316e5c] to [ef0c65555e].
| ︙ | ︙ | |||
14 15 16 17 18 19 20 | */ #include "config.h" #include <math.h> #import "OFColor.h" | | | < | | < < < < < < < < < < < < < | | | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
*/
#include "config.h"
#include <math.h>
#import "OFColor.h"
#import "OFConcreteColor.h"
#import "OFOnce.h"
#import "OFString.h"
#import "OFTaggedPointerColor.h"
@interface OFColorSingleton: OFConcreteColor
@end
@interface OFColorPlaceholder: OFColorSingleton
@end
static struct {
Class isa;
} placeholder;
#ifdef OF_OBJFW_RUNTIME
static const float allowedImprecision = 0.0000001;
#endif
@implementation OFColorPlaceholder
- (instancetype)initWithRed: (float)red
green: (float)green
blue: (float)blue
alpha: (float)alpha
{
#ifdef OF_OBJFW_RUNTIME
uint8_t redInt = nearbyintf(red * 255);
uint8_t greenInt = nearbyintf(green * 255);
uint8_t blueInt = nearbyintf(blue * 255);
if (fabsf(red * 255 - redInt) < allowedImprecision &&
fabsf(green * 255 - greenInt) < allowedImprecision &&
fabsf(blue * 255 - blueInt) < allowedImprecision && alpha == 1) {
id ret = [OFTaggedPointerColor colorWithRed: redInt
green: greenInt
blue: blueInt];
if (ret != nil)
return ret;
}
#endif
return (id)[[OFConcreteColor alloc] initWithRed: red
|
| ︙ | ︙ | |||
98 99 100 101 102 103 104 |
- (unsigned int)retainCount
{
return OFMaxRetainCount;
}
@end
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | < < | < < < < | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
- (unsigned int)retainCount
{
return OFMaxRetainCount;
}
@end
@implementation OFColor
+ (void)initialize
{
if (self == [OFColor class])
object_setClass((id)&placeholder, [OFColorPlaceholder class]);
}
+ (instancetype)alloc
{
if (self == [OFColor class])
return (id)&placeholder;
|
| ︙ | ︙ |
Added src/OFConcreteColor.h version [c6e319d32e].
> > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#import "OFColor.h"
OF_ASSUME_NONNULL_BEGIN
@interface OFConcreteColor: OFColor
{
float _red, _green, _blue, _alpha;
}
@end
OF_ASSUME_NONNULL_END
|
Added src/OFConcreteColor.m version [fac76ba952].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "OFConcreteColor.h"
#import "OFInvalidArgumentException.h"
@implementation OFConcreteColor
- (instancetype)initWithRed: (float)red
green: (float)green
blue: (float)blue
alpha: (float)alpha
{
self = [super init];
@try {
if (red < 0.0 || red > 1.0 ||
green < 0.0 || green > 1.0 ||
blue < 0.0 || blue > 1.0 ||
alpha < 0.0 || alpha > 1.0)
@throw [OFInvalidArgumentException exception];
_red = red;
_green = green;
_blue = blue;
_alpha = alpha;
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
- (void)getRed: (float *)red
green: (float *)green
blue: (float *)blue
alpha: (float *)alpha
{
*red = _red;
*green = _green;
*blue = _blue;
if (alpha != NULL)
*alpha = _alpha;
}
@end
|
Added src/OFTaggedPointerColor.h version [ee19a5ec0d].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /* * Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OFColor.h" OF_ASSUME_NONNULL_BEGIN #ifdef OF_OBJFW_RUNTIME @interface OFTaggedPointerColor: OFColor + (instancetype)colorWithRed: (uint8_t)red green: (uint8_t)green blue: (uint8_t)blue; @end #endif OF_ASSUME_NONNULL_END |
Added src/OFTaggedPointerColor.m version [4bde7edcf4].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "OFTaggedPointerColor.h"
#ifdef OF_OBJFW_RUNTIME
static int colorTag;
@implementation OFTaggedPointerColor
+ (void)initialize
{
if (self == [OFTaggedPointerColor class])
colorTag = objc_registerTaggedPointerClass(self);
}
+ (instancetype)colorWithRed: (uint8_t)red
green: (uint8_t)green
blue: (uint8_t)blue
{
return objc_createTaggedPointer(colorTag,
(uintptr_t)red << 16 | (uintptr_t)green << 8 | (uintptr_t)blue);
}
- (void)getRed: (float *)red
green: (float *)green
blue: (float *)blue
alpha: (float *)alpha
{
uintptr_t value = object_getTaggedPointerValue(self);
*red = (float)(value >> 16) / 255;
*green = (float)((value >> 8) & 0xFF) / 255;
*blue = (float)(value & 0xFF) / 255;
if (alpha != NULL)
*alpha = 1;
}
- (instancetype)retain
{
return self;
}
- (instancetype)autorelease
{
return self;
}
- (void)release
{
}
- (void)dealloc
{
OF_DEALLOC_UNSUPPORTED
}
@end
#endif
|