Add OFColor+QColor

This commit is contained in:
Jonathan Schleifer 2018-03-11 00:18:27 +01:00
parent c199b4cece
commit e5a0058952
No known key found for this signature in database
GPG key ID: 28D65178B37F33E3
7 changed files with 122 additions and 6 deletions

View file

@ -3,7 +3,8 @@ include ../../extra.mk
STATIC_PIC_LIB_NOINST = ${COMMON_LIB_A}
STATIC_LIB_NOINST = ${COMMON_A}
SRCS = OFData+QByteArray.mm \
SRCS = OFColor+QColor.mm \
OFData+QByteArray.mm \
OFString+QString.mm
include ../../buildsys.mk

View file

@ -0,0 +1,53 @@
/*
* Copyright (c) 2018, Jonathan Schleifer <js@heap.zone>
*
* https://heap.zone/git/objqt.git
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice is present in all copies.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#import <ObjFW/ObjFW.h>
#include <QColor>
@interface OFColor (QColor)
+ (instancetype)colorWithQColor: (const QColor &)qColor;
- (instancetype)initWithQColor: (const QColor &)qColor;
- (QColor)qColor;
@end
namespace ObjQt {
static OF_INLINE OFColor *
toOF(const QColor &qColor)
{
if (!qColor.isValid())
return nil;
return [OFColor colorWithQColor: qColor];
}
static OF_INLINE QColor
toQt(OFColor *color)
{
if (color == nil)
return QColor();
return [color qColor];
}
}

View file

@ -0,0 +1,56 @@
/*
* Copyright (c) 2018, Jonathan Schleifer <js@heap.zone>
*
* https://heap.zone/git/objqt.git
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice is present in all copies.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#import "OFColor+QColor.h"
@implementation OFColor (QColor)
+ (instancetype)colorWithQColor: (const QColor &)qColor
{
return [[[self alloc] initWithQColor: qColor] autorelease];
}
- (instancetype)initWithQColor: (const QColor &)qColor
{
return [self initWithRed: qColor.redF()
green: qColor.greenF()
blue: qColor.blueF()
alpha: qColor.alphaF()];
}
- (QColor)qColor
{
QColor qColor;
float red, green, blue, alpha;
[self getRed: &red
green: &green
blue: &blue
alpha: &alpha];
qColor.setRedF(red);
qColor.setGreenF(green);
qColor.setBlueF(blue);
qColor.setAlphaF(alpha);
return qColor;
}
@end

View file

@ -26,6 +26,7 @@
@interface OFData (QByteArray)
+ (instancetype)dataWithQByteArray: (const QByteArray &)qByteArray;
- (instancetype)initWithQByteArray: (const QByteArray &)qByteArray;
- (QByteArray)qByteArray;
@end

View file

@ -25,8 +25,13 @@
@implementation OFData (QByteArray)
+ (instancetype)dataWithQByteArray: (const QByteArray &)qByteArray
{
return [OFData dataWithItems: qByteArray.data()
count: qByteArray.count()];
return [[[self alloc] initWithQByteArray: qByteArray] autorelease];
}
- (instancetype)initWithQByteArray: (const QByteArray &)qByteArray
{
return [self initWithItems: qByteArray.data()
count: qByteArray.count()];
}
- (QByteArray)qByteArray

View file

@ -26,7 +26,7 @@
@interface OFString (QString)
+ (instancetype)stringWithQString: (const QString &)qString;
- initWithQString: (const QString &)qString;
- (instancetype)initWithQString: (const QString &)qString;
- (QString)qString;
@end

View file

@ -23,12 +23,12 @@
#import "OFString+QString.h"
@implementation OFString (QString)
+ stringWithQString: (const QString &)qString
+ (instancetype)stringWithQString: (const QString &)qString
{
return [[[self alloc] initWithQString: qString] autorelease];
}
- initWithQString: (const QString &)qString
- (instancetype)initWithQString: (const QString &)qString
{
static_assert(sizeof(QChar) == sizeof(char16_t),
"QChar and char16_t have a different size!");