![]() |
API 0.9.5
|
00001 /* 00002 * CPStringDrawing.j 00003 * AppKit 00004 * 00005 * Created by Francisco Tolmasky. 00006 * Copyright 2008, 280 North, Inc. 00007 * 00008 * This library is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public 00010 * License as published by the Free Software Foundation; either 00011 * version 2.1 of the License, or (at your option) any later version. 00012 * 00013 * This library is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 * Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License along with this library; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 */ 00022 00023 00024 00025 00026 var CPStringSizeWithFontInWidthCache = {}; 00027 00028 CPStringSizeCachingEnabled = YES; 00029 00030 @implementation CPString (CPStringDrawing) 00031 00035 + (CPDictionary)metricsOfFont:(CPFont)aFont 00036 { 00037 return [CPPlatformString metricsOfFont:aFont]; 00038 } 00039 00043 - (CPString)cssString 00044 { 00045 return self; 00046 } 00047 00048 - (CGSize)sizeWithFont:(CPFont)aFont 00049 { 00050 return [self sizeWithFont:aFont inWidth:NULL]; 00051 } 00052 00053 - (CGSize)sizeWithFont:(CPFont)aFont inWidth:(float)aWidth 00054 { 00055 if (!CPStringSizeCachingEnabled) 00056 return [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth]; 00057 00058 var cacheKey = self + [aFont cssString] + aWidth, 00059 size = CPStringSizeWithFontInWidthCache[cacheKey]; 00060 00061 if (size === undefined) 00062 { 00063 size = [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth]; 00064 CPStringSizeWithFontInWidthCache[cacheKey] = size; 00065 } 00066 00067 return CGSizeMakeCopy(size); 00068 } 00069 00070 @end