mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-29 22:07:39 +00:00
Flip font on set if needed
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@13605 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c629ab8ec2
commit
0b2c1942c1
2 changed files with 45 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2002-05-07 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Source/NSFont.m (-initWithName:matrix:): If matrix
|
||||
is ident, set matrixExplicitlySet to NO
|
||||
(-set): If the focus view is flipped and matrix not set, set our
|
||||
flipped font equivalent.
|
||||
|
||||
2002-05-06 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Source/NSGraphicsContext.m: More documentation.
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <AppKit/NSFont.h>
|
||||
#include <AppKit/NSFontManager.h>
|
||||
#include <AppKit/GSFontInfo.h>
|
||||
#include <AppKit/NSView.h>
|
||||
|
||||
/* We cache all the 4 default fonts after we first get them.
|
||||
But when a default font is changed, the variable is set to YES
|
||||
|
@ -374,6 +375,13 @@ setNSFont(NSString* key, NSFont* font)
|
|||
return 12.0;
|
||||
}
|
||||
|
||||
/** Creates a new font with name aFontName and matrix fontMatrix. The
|
||||
fontMatrix is a standard size element matrix as used in PostScript
|
||||
to describe the scaling of the font, typically it just includes
|
||||
the font size as [fontSize 0 0 fontSize 0 0]. You can use the constant
|
||||
NSFontIdentityMatrix in place of [1 0 0 1 0 0]. If NSFontIdentityMatrix,
|
||||
then the font will automatically flip itself when set in a
|
||||
flipped view */
|
||||
+ (NSFont*) fontWithName: (NSString*)aFontName
|
||||
matrix: (const float*)fontMatrix
|
||||
{
|
||||
|
@ -381,6 +389,9 @@ setNSFont(NSString* key, NSFont* font)
|
|||
matrix: fontMatrix]);
|
||||
}
|
||||
|
||||
/** Creates a new font with name aFontName and size fontSize. Fonts created
|
||||
using this method will automatically flip themselves when set in a flipped
|
||||
view */
|
||||
+ (NSFont*) fontWithName: (NSString*)aFontName
|
||||
size: (float)fontSize
|
||||
{
|
||||
|
@ -411,6 +422,12 @@ setNSFont(NSString* key, NSFont* font)
|
|||
//
|
||||
// Instance methods
|
||||
//
|
||||
/** <init /> Initializes a newly created font class from the name and
|
||||
information given in the fontMatrix. The fontMatrix is a standard
|
||||
size element matrix as used in PostScript to describe the scaling
|
||||
of the font, typically it just includes the font size as
|
||||
[fontSize 0 0 fontSize 0 0].
|
||||
*/
|
||||
- (id) initWithName: (NSString*)name matrix: (const float*)fontMatrix
|
||||
{
|
||||
NSFont *font;
|
||||
|
@ -435,6 +452,10 @@ setNSFont(NSString* key, NSFont* font)
|
|||
|
||||
fontName = [name copy];
|
||||
memcpy(matrix, fontMatrix, sizeof(matrix));
|
||||
if (fontMatrix == NSFontIdentityMatrix)
|
||||
matrixExplicitlySet = NO;
|
||||
else
|
||||
matrixExplicitlySet = YES;
|
||||
fontInfo = RETAIN([GSFontInfo fontInfoForFontName: fontName
|
||||
matrix: fontMatrix]);
|
||||
return self;
|
||||
|
@ -498,14 +519,30 @@ setNSFont(NSString* key, NSFont* font)
|
|||
return new_font;
|
||||
}
|
||||
|
||||
- (NSFont *)_flippedViewFont
|
||||
{
|
||||
float fontMatrix[6];
|
||||
memcpy(fontMatrix, matrix, sizeof(matrix));
|
||||
fontMatrix[3] *= -1;
|
||||
return [NSFont fontWithName: fontName matrix: fontMatrix];
|
||||
}
|
||||
|
||||
//
|
||||
// Setting the Font
|
||||
//
|
||||
/** Sets the receiver as the font used for text drawing operations. If the
|
||||
current view is a flipped view, the reciever automatically flips itself
|
||||
to display correctly in the flipped view, as long as the font was created
|
||||
without explicitly setting the font matrix */
|
||||
- (void) set
|
||||
{
|
||||
NSGraphicsContext *ctxt = GSCurrentContext();
|
||||
|
||||
[ctxt GSSetFont: self];
|
||||
if (matrixExplicitlySet == NO && [[NSView focusView] isFlipped])
|
||||
[ctxt GSSetFont: [self _flippedViewFont]];
|
||||
else
|
||||
[ctxt GSSetFont: self];
|
||||
|
||||
[ctxt useFont: fontName];
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue