Line data Source code
1 0 : /*
2 :
3 : OOJSFont.m
4 :
5 :
6 : Copyright (C) 2011-2013 Jens Ayton
7 :
8 : Permission is hereby granted, free of charge, to any person obtaining a copy
9 : of this software and associated documentation files (the "Software"), to deal
10 : in the Software without restriction, including without limitation the rights
11 : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 : copies of the Software, and to permit persons to whom the Software is
13 : furnished to do so, subject to the following conditions:
14 :
15 : The above copyright notice and this permission notice shall be included in all
16 : copies or substantial portions of the Software.
17 :
18 : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 : SOFTWARE.
25 :
26 : */
27 :
28 : #import "OOJSFont.h"
29 : #import "OOJavaScriptEngine.h"
30 : #import "HeadUpDisplay.h"
31 :
32 :
33 : static JSBool FontMeasureString(JSContext *context, uintN argc, jsval *vp);
34 :
35 :
36 : // MARK: Public
37 :
38 0 : void InitOOJSFont(JSContext *context, JSObject *global)
39 : {
40 : JSObject *fontObject = JS_DefineObject(context, global, "defaultFont", NULL, NULL, OOJS_PROP_READONLY);
41 : JS_DefineFunction(context, fontObject, "measureString", FontMeasureString, 1, OOJS_METHOD_READONLY);
42 : }
43 :
44 :
45 : // MARK: Methods
46 :
47 0 : static JSBool FontMeasureString(JSContext *context, uintN argc, jsval *vp)
48 : {
49 : OOJS_NATIVE_ENTER(context)
50 :
51 : if (EXPECT_NOT(argc < 1) || JSVAL_IS_VOID(OOJS_ARGV[0]))
52 : {
53 : jsval undefined = JSVAL_VOID;
54 : OOJSReportBadArguments(context, nil, @"defaultFont.measureString", MIN(argc, 1U), &undefined, nil, @"string");
55 : return NO;
56 : }
57 :
58 : OOJS_RETURN_DOUBLE(OOStringWidthInEm(OOStringFromJSValue(context, OOJS_ARGV[0])));
59 :
60 : OOJS_NATIVE_EXIT
61 : }
|