libs-gui/Source/GSGuiPrivate.h
Eric Wasylishen 01c4a0be63 * Headers/Additions/GNUstepGUI/GSTheme.h: New GSThemeMargins struct.
Rename buttonBorderForCell:style:state: to buttonMarginsForCell:style:state:
and return the top/bottom/left/right margins instead of just two values.
(This is a theme API break.)
* Source/GSThemeDrawing.m: Implement buttonMarginsForCell:style:state:.
Also reduce the top and left margin of the default button by 1 pt, to
better reflect the button's appearance.
* Source/GSGuiPrivate.h: Add a GSRoundTowardsNegativeInfinity function
* Source/NSButtonCell.m (-drawImage:withFrame:inView:): Round the image
position down and to the right, as this seems to look the best.
* Source/NSButtonCell.m (-cellSize): Call new buttonMarginsForCell: method
* Source/NSButtonCell.m (-drawingRectForBounds:): Call new
buttonMarginsForCell: method


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33743 72102866-910b-0410-8b05-ffd578937521
2011-08-15 23:12:37 +00:00

107 lines
2.9 KiB
Objective-C

/*
GSGuiPrivate.h
Define private functions for use in the GNUstep GUI Library
Copyright (C) 2001 Free Software Foundation, Inc.
Author: Nicola Pero <nicola@brainstorm.co.uk>
Date: 2001
This file is part of the GNUstep GUI Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef _GNUstep_H_GSGuiPrivate
#define _GNUstep_H_GSGuiPrivate
#import <Foundation/NSBundle.h>
#include "GNUstepBase/GSConfig.h"
#include <math.h>
/*
* Return the gnustep-gui bundle used to load gnustep-gui resources.
* Should be only used inside the gnustep-gui library. Implemented
* in Source/NSApplication.m
*/
NSBundle *GSGuiBundle (void);
/*
* Localize a message of the gnustep-gui library.
*/
static inline NSString *GSGuiLocalizedString (NSString *key, NSString *comment)
{
NSBundle *b = GSGuiBundle ();
if (b != nil)
{
return [b localizedStringForKey: key value: @"" table: nil];
}
else
{
return key;
}
}
/*
* Redefine _() to be our own GSGuiLocalizedString(). This is so that
* make_strings will recognize it, and for easy typing.
*/
#ifdef _
# undef _
#endif
#define _(X) GSGuiLocalizedString (X, @"")
#ifdef NSLocalizedString
# undef NSLocalizedString
#endif
#define NSLocalizedString(key,comment) GSGuiLocalizedString (key, comment)
/**
* Rounds to the nearest integer, and in the case of ties, round to the
* larger integer. This is the recommended rounding function for rounding
* graphics points.
*
* For example:
* GSRoundTowardsInfinity(0.8) == 1.0
* GSRoundTowardsInfinity(0.5) == 1.0
* GSRoundTowardsInfinity(0.1) == 0.0
* GSRoundTowardsInfinity(-2.5) == -2.0
*/
static inline CGFloat GSRoundTowardsInfinity(CGFloat x)
{
return floor(x + 0.5);
}
/**
* Rounds to the nearest integer, and in the case of ties, round to the
* smaller integer.
*
* For example:
* GSRoundTowardsNegativeInfinity(0.8) == 1.0
* GSRoundTowardsNegativeInfinity(0.5) == 0.0
* GSRoundTowardsNegativeInfinity(0.1) == 0.0
* GSRoundTowardsNegativeInfinity(-2.5) == -3.0
*/
static inline CGFloat GSRoundTowardsNegativeInfinity(CGFloat x)
{
return ceil(x - 0.5);
}
#endif /* _GNUstep_H_GSGuiPrivate */