mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-30 12:50:40 +00:00
* NSAttributedString.m and NSAttributedString.h remove.
* NSStringDrawing.m and NSStringDrawing.h add NSAttributedString interface and implementation. Implement NSAttributedString's size method and optimize tab width calculation. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@3352 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
2bec406f7f
commit
b77483cabe
13 changed files with 87 additions and 187 deletions
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
NSAttributedString.m
|
||||
|
||||
Category which adds measure capabilities to NSString.
|
||||
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
|
||||
Author: Felipe A. Rodriguez <far@ix.netcom.com>
|
||||
Date: Aug 1998
|
||||
|
||||
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 Library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; see the file COPYING.LIB.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <AppKit/NSAttributedString.h>
|
||||
#include <AppKit/AppKit.h>
|
||||
// by default tabs are measured as one
|
||||
#define TABWIDTH 3 // char so this value is set to one
|
||||
// minus the default tab width of 4
|
||||
|
||||
|
||||
@implementation NSString(NSAttributedString)
|
||||
|
||||
- (NSSize)sizeWithAttributes:(NSDictionary *)attrs
|
||||
{
|
||||
NSFont *font;
|
||||
const char *str = [self cString];
|
||||
int i = 0, j = TABWIDTH;
|
||||
float tabSize;
|
||||
|
||||
while(*str != '\0') // calc the additional size
|
||||
{ // to be added for tabs.
|
||||
if(*str++ == '\t')
|
||||
{ // j is initialized to the
|
||||
i += j; // max number of spaces
|
||||
j = TABWIDTH; // needed per tab. it then
|
||||
} // varies in order to align
|
||||
else // tabs to even multiples
|
||||
j = j-- > 0 ? j : TABWIDTH; // of TABWIDTH + 1.
|
||||
};
|
||||
// if font is not
|
||||
if(!(font = [attrs objectForKey:NSFontAttributeName])) // specified, use
|
||||
font = [NSFont userFontOfSize:12]; // the default
|
||||
|
||||
tabSize = (float)i * [font widthOfString:@"\t"];
|
||||
|
||||
return NSMakeSize(([font widthOfString:self] + tabSize), [font pointSize]);
|
||||
}
|
||||
|
||||
@end
|
Loading…
Add table
Add a link
Reference in a new issue