mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 08:30:59 +00:00
* Source/GSThemeTools.m (-initWithNinePatchImage:): Parse the
"optiacal bounds" metadata in 9-patch images. It's stored in the layoutRect ivar but not used otherwise. See "Optical bounds layout" section of: http://developer.android.com/about/versions/android-4.3.html * Source/GSThemePrivate.h (GSDrawTiles): Add layoutRect ivar git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37219 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
a627839460
commit
bd3426dd41
3 changed files with 68 additions and 4 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2013-10-12 Eric Wasylishen <ewasylishen@gmail.com>
|
||||
|
||||
* Source/GSThemeTools.m (-initWithNinePatchImage:): Parse the
|
||||
"optiacal bounds" metadata in 9-patch images. It's stored
|
||||
in the layoutRect ivar but not used otherwise.
|
||||
|
||||
See "Optical bounds layout" section of:
|
||||
http://developer.android.com/about/versions/android-4.3.html
|
||||
* Source/GSThemePrivate.h (GSDrawTiles): Add layoutRect ivar
|
||||
|
||||
2013-10-11 Eric Wasylishen <ewasylishen@gmail.com>
|
||||
|
||||
* Source/NSColorWell.m (-drawRect:): Remove incorrect intersection
|
||||
|
|
|
@ -65,6 +65,7 @@ typedef enum {
|
|||
NSRect contentRect; /** Rectangle in which content should be
|
||||
* drawn, normally rects[TileCM], but can
|
||||
* be customized in the nine-patch format */
|
||||
NSRect layoutRect;
|
||||
NSRect originalRectCM; /** Caches rects[TileCM] as it was before
|
||||
* -validateTilesSizeWithImage clears the
|
||||
* origin. Used by -themeMargins */
|
||||
|
|
|
@ -849,11 +849,11 @@ withRepeatedImage: (NSImage*)image
|
|||
NSColor *pixelColor = [rep colorAtX: i y: s.height - 1];
|
||||
|
||||
[pixelColor getRed: &r green: &g blue: &b alpha: &a];
|
||||
if (a > 0 && x1 == -1)
|
||||
if ((a == 1 && r == 0 && g == 0 && b == 0) && x1 == -1)
|
||||
{
|
||||
x1 = i;
|
||||
}
|
||||
else if (a == 0 && x1 != -1)
|
||||
else if (!(a == 1 && r == 0 && g == 0 && b == 0) && x1 != -1)
|
||||
{
|
||||
x2 = i - 1;
|
||||
break;
|
||||
|
@ -865,11 +865,11 @@ withRepeatedImage: (NSImage*)image
|
|||
NSColor *pixelColor = [rep colorAtX: s.width - 1 y: i];
|
||||
|
||||
[pixelColor getRed: &r green: &g blue: &b alpha: &a];
|
||||
if (a > 0 && y1 == -1)
|
||||
if ((a == 1 && r == 0 && g == 0 && b == 0) && y1 == -1)
|
||||
{
|
||||
y1 = i;
|
||||
}
|
||||
else if (a == 0 && y1 != -1)
|
||||
else if (!(a == 1 && r == 0 && g == 0 && b == 0) && y1 != -1)
|
||||
{
|
||||
y2 = i - 1;
|
||||
break;
|
||||
|
@ -904,6 +904,59 @@ withRepeatedImage: (NSImage*)image
|
|||
contentRect.size.height = 1 + y2 - y1;
|
||||
}
|
||||
|
||||
// Measure the layout rect (the right and bottom edges of the nine-patch
|
||||
// data which _isn't_ red pixels)
|
||||
|
||||
x1 = -1;
|
||||
x2 = -1;
|
||||
y1 = -1;
|
||||
y2 = -1;
|
||||
|
||||
for (i = 1; i < (s.width - 1); i++)
|
||||
{
|
||||
NSColor *pixelColor = [rep colorAtX: i y: s.height - 1];
|
||||
|
||||
[pixelColor getRed: &r green: &g blue: &b alpha: &a];
|
||||
if (!(a == 1 && r == 1 && g == 0 && b == 0) && x1 == -1)
|
||||
{
|
||||
x1 = i;
|
||||
}
|
||||
else if ((a == 1 && r == 1 && g == 0 && b == 0) && x1 != -1)
|
||||
{
|
||||
x2 = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 1; i < (s.height - 1); i++)
|
||||
{
|
||||
NSColor *pixelColor = [rep colorAtX: s.width - 1 y: i];
|
||||
|
||||
[pixelColor getRed: &r green: &g blue: &b alpha: &a];
|
||||
if (!(a == 1 && r == 1 && g == 0 && b == 0) && y1 == -1)
|
||||
{
|
||||
y1 = i;
|
||||
}
|
||||
else if ((a == 1 && r == 1 && g == 0 && b == 0) && y1 != -1)
|
||||
{
|
||||
y2 = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (x2 == -1)
|
||||
{
|
||||
x2 = s.width - 2;
|
||||
}
|
||||
|
||||
if (y2 == -1)
|
||||
{
|
||||
y2 = s.height - 2;
|
||||
}
|
||||
|
||||
layoutRect = NSMakeRect(x1, s.height - y2 - 1, 1 + x2 - x1, 1 + y2 - y1);
|
||||
|
||||
[self validateTilesSizeWithImage: image];
|
||||
return self;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue