1 <html><head><meta http-equiv=
"content-type" content=
"text/html; charset=utf-8"> <style>
3 .COMM {color: #bbb; font-style: italic;}
7 .line {border-right:
1px dotted #
666; color: #
666; font-style: normal;}
8 </style></head><body><pre><span class='line'
> 1</span> <span class=
"COMM">/*
9 <span class='line'
> 2</span> * Copyright (C)
2008,
2009 Mihai Şucan
10 <span class='line'
> 3</span> *
11 <span class='line'
> 4</span> * This file is part of PaintWeb.
12 <span class='line'
> 5</span> *
13 <span class='line'
> 6</span> * PaintWeb is free software: you can redistribute it and/or modify
14 <span class='line'
> 7</span> * it under the terms of the GNU General Public License as published by
15 <span class='line'
> 8</span> * the Free Software Foundation, either version
3 of the License, or
16 <span class='line'
> 9</span> * (at your option) any later version.
17 <span class='line'
> 10</span> *
18 <span class='line'
> 11</span> * PaintWeb is distributed in the hope that it will be useful,
19 <span class='line'
> 12</span> * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 <span class='line'
> 13</span> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 <span class='line'
> 14</span> * GNU General Public License for more details.
22 <span class='line'
> 15</span> *
23 <span class='line'
> 16</span> * You should have received a copy of the GNU General Public License
24 <span class='line'
> 17</span> * along with PaintWeb. If not, see
<http://www.gnu.org/licenses
/>.
25 <span class='line'
> 18</span> *
26 <span class='line'
> 19</span> * $URL: http://code.google.com/p/paintweb $
27 <span class='line'
> 20</span> * $Date:
2009-
06-
22 22:
31:
49 +
0300 $
28 <span class='line'
> 21</span> */
</span><span class=
"WHIT">
29 <span class='line'
> 22</span>
30 <span class='line'
> 23</span> </span><span class=
"COMM">/**
31 <span class='line'
> 24</span> * @author
<a
lang=
"ro" href=
"http://www.robodesign.ro/mihai">Mihai Şucan
</a
>
32 <span class='line'
> 25</span> * @fileOverview Holds the text tool implementation.
33 <span class='line'
> 26</span> */
</span><span class=
"WHIT">
34 <span class='line'
> 27</span>
35 <span class='line'
> 28</span> </span><span class=
"COMM">// TODO: make this tool nicer to use.
</span><span class=
"WHIT">
36 <span class='line'
> 29</span>
37 <span class='line'
> 30</span> </span><span class=
"COMM">/**
38 <span class='line'
> 31</span> * @class The text tool.
39 <span class='line'
> 32</span> *
40 <span class='line'
> 33</span> * @param {PaintWeb} app Reference to the main paint application object.
41 <span class='line'
> 34</span> */
</span><span class=
"WHIT">
42 <span class='line'
> 35</span> </span><span class=
"NAME">pwlib.tools.text
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
43 <span class='line'
> 36</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">_self
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">this
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
44 <span class='line'
> 37</span> </span><span class=
"WHIT"> </span><span class=
"NAME">clearInterval
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.win.clearInterval
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
45 <span class='line'
> 38</span> </span><span class=
"WHIT"> </span><span class=
"NAME">config
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.config.text
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
46 <span class='line'
> 39</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.buffer.context
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
47 <span class='line'
> 40</span> </span><span class=
"WHIT"> </span><span class=
"NAME">doc
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.doc
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
48 <span class='line'
> 41</span> </span><span class=
"WHIT"> </span><span class=
"NAME">gui
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.gui
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
49 <span class='line'
> 42</span> </span><span class=
"WHIT"> </span><span class=
"NAME">image
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.image
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
50 <span class='line'
> 43</span> </span><span class=
"WHIT"> </span><span class=
"NAME">lang
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.lang
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
51 <span class='line'
> 44</span> </span><span class=
"WHIT"> </span><span class=
"NAME">MathRound
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">Math.round
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
52 <span class='line'
> 45</span> </span><span class=
"WHIT"> </span><span class=
"NAME">mouse
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.mouse
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
53 <span class='line'
> 46</span> </span><span class=
"WHIT"> </span><span class=
"NAME">setInterval
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.win.setInterval
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
54 <span class='line'
> 47</span>
55 <span class='line'
> 48</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
56 <span class='line'
> 49</span> * The interval ID used for invoking the drawing operation every few
57 <span class='line'
> 50</span> * milliseconds.
58 <span class='line'
> 51</span> *
59 <span class='line'
> 52</span> * @private
60 <span class='line'
> 53</span> * @see PaintWeb.config.toolDrawDelay
61 <span class='line'
> 54</span> */
</span><span class=
"WHIT">
62 <span class='line'
> 55</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">timer
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
63 <span class='line'
> 56</span>
64 <span class='line'
> 57</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
65 <span class='line'
> 58</span> * Holds the previous tool ID.
66 <span class='line'
> 59</span> *
67 <span class='line'
> 60</span> * @private
68 <span class='line'
> 61</span> * @type String
69 <span class='line'
> 62</span> */
</span><span class=
"WHIT">
70 <span class='line'
> 63</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">prevTool
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.tool
</span><span class=
"WHIT"> </span><span class=
"PUNC">?
</span><span class=
"WHIT"> </span><span class=
"NAME">app.tool._id
</span><span class=
"WHIT"> </span><span class=
"PUNC">:
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
71 <span class='line'
> 64</span>
72 <span class='line'
> 65</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
73 <span class='line'
> 66</span> * Tells if the drawing canvas needs to be updated or not.
74 <span class='line'
> 67</span> *
75 <span class='line'
> 68</span> * @private
76 <span class='line'
> 69</span> * @type Boolean
77 <span class='line'
> 70</span> * @default false
78 <span class='line'
> 71</span> */
</span><span class=
"WHIT">
79 <span class='line'
> 72</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
80 <span class='line'
> 73</span>
81 <span class='line'
> 74</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">inputString
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
82 <span class='line'
> 75</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
83 <span class='line'
> 76</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChangeId
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
84 <span class='line'
> 77</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ns_svg
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">"http://www.w3.org/2000/svg"</span><span class=
"PUNC">,
</span><span class=
"WHIT">
85 <span class='line'
> 78</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
86 <span class='line'
> 79</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
87 <span class='line'
> 80</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT">
88 <span class='line'
> 81</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">;
</span><span class=
"WHIT">
89 <span class='line'
> 82</span>
90 <span class='line'
> 83</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
91 <span class='line'
> 84</span> * Tool preactivation code. This method check if the browser has support for
92 <span class='line'
> 85</span> * rendering text in Canvas.
93 <span class='line'
> 86</span> *
94 <span class='line'
> 87</span> * @returns {Boolean} True if the tool can be activated successfully, or false
95 <span class='line'
> 88</span> * if not.
96 <span class='line'
> 89</span> */
</span><span class=
"WHIT">
97 <span class='line'
> 90</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.preActivate
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
98 <span class='line'
> 91</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">gui.inputs.textString
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT"> </span><span class=
"PUNC">!
</span><span class=
"NAME">gui.inputs.text_fontFamily
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT">
99 <span class='line'
> 92</span> </span><span class=
"PUNC">!
</span><span class=
"NAME">gui.elems.viewport
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
100 <span class='line'
> 93</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
101 <span class='line'
> 94</span>
102 <span class='line'
> 95</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
103 <span class='line'
> 96</span>
104 <span class='line'
> 97</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Canvas
2D Text API
</span><span class=
"WHIT">
105 <span class='line'
> 98</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
106 <span class='line'
> 99</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
107 <span class='line'
>100</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
108 <span class='line'
>101</span>
109 <span class='line'
>102</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Opera can only render text via SVG Text.
</span><span class=
"WHIT">
110 <span class='line'
>103</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Note: support for Opera has been disabled.
</span><span class=
"WHIT">
111 <span class='line'
>104</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// There are severe SVG redraw issues when updating the SVG text element.
</span><span class=
"WHIT">
112 <span class='line'
>105</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Besides, there are important memory leaks.
</span><span class=
"WHIT">
113 <span class='line'
>106</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Ultimately, there's a deal breaker: security violation. The SVG document
</span><span class=
"WHIT">
114 <span class='line'
>107</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// which is rendered inside Canvas is considered
"external" </span><span class=
"WHIT">
115 <span class='line'
>108</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// - get/putImageData() and toDataURL() stop working after drawImage(svg) is
</span><span class=
"WHIT">
116 <span class='line'
>109</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// invoked. Eh.
</span><span class=
"WHIT">
117 <span class='line'
>110</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/*if (pwlib.browser.opera) {
118 <span class='line'
>111</span> return true;
119 <span class='line'
>112</span> }*/
</span><span class=
"WHIT">
120 <span class='line'
>113</span>
121 <span class='line'
>114</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Gecko
1.9.0 had its own proprietary Canvas
2D Text API.
</span><span class=
"WHIT">
122 <span class='line'
>115</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">context.mozPathText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
123 <span class='line'
>116</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
124 <span class='line'
>117</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
125 <span class='line'
>118</span>
126 <span class='line'
>119</span> </span><span class=
"WHIT"> </span><span class=
"NAME">alert
</span><span class=
"PUNC">(
</span><span class=
"NAME">lang.errorTextUnsupported
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
127 <span class='line'
>120</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
128 <span class='line'
>121</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
129 <span class='line'
>122</span>
130 <span class='line'
>123</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
131 <span class='line'
>124</span> * The tool activation code. This sets up a few variables, starts the drawing
132 <span class='line'
>125</span> * timer and adds event listeners as needed.
133 <span class='line'
>126</span> */
</span><span class=
"WHIT">
134 <span class='line'
>127</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.activate
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
135 <span class='line'
>128</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Reset the mouse coordinates to the scroll top/left corner such that the
</span><span class=
"WHIT">
136 <span class='line'
>129</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// text is rendered there.
</span><span class=
"WHIT">
137 <span class='line'
>130</span> </span><span class=
"WHIT"> </span><span class=
"NAME">mouse.x
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">Math.round
</span><span class=
"PUNC">(
</span><span class=
"NAME">gui.elems.viewport.scrollLeft
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NAME">image.canvasScale
</span><span class=
"PUNC">)
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
138 <span class='line'
>131</span> </span><span class=
"WHIT"> </span><span class=
"NAME">mouse.y
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">Math.round
</span><span class=
"PUNC">(
</span><span class=
"NAME">gui.elems.viewport.scrollTop
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NAME">image.canvasScale
</span><span class=
"PUNC">)
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
139 <span class='line'
>132</span>
140 <span class='line'
>133</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">gui.inputs.text_fontFamily
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
141 <span class='line'
>134</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">gui.inputs.textString
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
142 <span class='line'
>135</span>
143 <span class='line'
>136</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">pwlib.browser.opera
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
144 <span class='line'
>137</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChangeId
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.events.add
</span><span class=
"PUNC">(
</span><span class=
"STRN">'configChange'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
145 <span class='line'
>138</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.addEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'input'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
146 <span class='line'
>139</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.addEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'change'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
147 <span class='line'
>140</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
148 <span class='line'
>141</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChangeId
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">app.events.add
</span><span class=
"PUNC">(
</span><span class=
"STRN">'configChange'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
149 <span class='line'
>142</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.addEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'input'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
150 <span class='line'
>143</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.addEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'change'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
151 <span class='line'
>144</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
152 <span class='line'
>145</span>
153 <span class='line'
>146</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Render text using the Canvas
2D context text API defined by HTML
5.
</span><span class=
"WHIT">
154 <span class='line'
>147</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
155 <span class='line'
>148</span> </span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw_spec
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
156 <span class='line'
>149</span>
157 <span class='line'
>150</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">pwlib.browser.opera
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
158 <span class='line'
>151</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Render text using a SVG Text element which is copied into Canvas using
</span><span class=
"WHIT">
159 <span class='line'
>152</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// drawImage().
</span><span class=
"WHIT">
160 <span class='line'
>153</span> </span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw_opera
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
161 <span class='line'
>154</span> </span><span class=
"WHIT"> </span><span class=
"NAME">initOpera
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
162 <span class='line'
>155</span>
163 <span class='line'
>156</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">context.mozPathText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
164 <span class='line'
>157</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Render text using proprietary API available in Gecko
1.9.0.
</span><span class=
"WHIT">
165 <span class='line'
>158</span> </span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw_moz
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
166 <span class='line'
>159</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.mozMeasureText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
167 <span class='line'
>160</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
168 <span class='line'
>161</span>
169 <span class='line'
>162</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">timer
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
170 <span class='line'
>163</span> </span><span class=
"WHIT"> </span><span class=
"NAME">timer
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">setInterval
</span><span class=
"PUNC">(
</span><span class=
"NAME">_self.draw
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">app.config.toolDrawDelay
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
171 <span class='line'
>164</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
172 <span class='line'
>165</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
173 <span class='line'
>166</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
174 <span class='line'
>167</span>
175 <span class='line'
>168</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
176 <span class='line'
>169</span> * The tool deactivation simply consists of removing the event listeners added
177 <span class='line'
>170</span> * when the tool was constructed, and clearing the buffer canvas.
178 <span class='line'
>171</span> */
</span><span class=
"WHIT">
179 <span class='line'
>172</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.deactivate
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
180 <span class='line'
>173</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">timer
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
181 <span class='line'
>174</span> </span><span class=
"WHIT"> </span><span class=
"NAME">clearInterval
</span><span class=
"PUNC">(
</span><span class=
"NAME">timer
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
182 <span class='line'
>175</span> </span><span class=
"WHIT"> </span><span class=
"NAME">timer
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
183 <span class='line'
>176</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
184 <span class='line'
>177</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
185 <span class='line'
>178</span>
186 <span class='line'
>179</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev_configChangeId
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
187 <span class='line'
>180</span> </span><span class=
"WHIT"> </span><span class=
"NAME">app.events.remove
</span><span class=
"PUNC">(
</span><span class=
"STRN">'configChange'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChangeId
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
188 <span class='line'
>181</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
189 <span class='line'
>182</span>
190 <span class='line'
>183</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">pwlib.browser.opera
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
191 <span class='line'
>184</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.removeEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'input'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
192 <span class='line'
>185</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.removeEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'change'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
193 <span class='line'
>186</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
194 <span class='line'
>187</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.removeEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'input'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
195 <span class='line'
>188</span> </span><span class=
"WHIT"> </span><span class=
"NAME">inputString.removeEventListener
</span><span class=
"PUNC">(
</span><span class=
"STRN">'change'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
196 <span class='line'
>189</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
197 <span class='line'
>190</span>
198 <span class='line'
>191</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
199 <span class='line'
>192</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">null
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
200 <span class='line'
>193</span>
201 <span class='line'
>194</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.clearRect
</span><span class=
"PUNC">(
</span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.width
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.height
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
202 <span class='line'
>195</span>
203 <span class='line'
>196</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
204 <span class='line'
>197</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
205 <span class='line'
>198</span>
206 <span class='line'
>199</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
207 <span class='line'
>200</span> * Initialize the SVG document for Opera. This is used for rendering the text.
208 <span class='line'
>201</span> * @private
209 <span class='line'
>202</span> */
</span><span class=
"WHIT">
210 <span class='line'
>203</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"NAME">initOpera
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
211 <span class='line'
>204</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">doc.createElementNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'svg'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
212 <span class='line'
>205</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'version'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'
1.1'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
213 <span class='line'
>206</span>
214 <span class='line'
>207</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">doc.createElementNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'text'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
215 <span class='line'
>208</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.appendChild
</span><span class=
"PUNC">(
</span><span class=
"NAME">doc.createTextNode
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
216 <span class='line'
>209</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.appendChild
</span><span class=
"PUNC">(
</span><span class=
"NAME">svgText
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
217 <span class='line'
>210</span>
218 <span class='line'
>211</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
219 <span class='line'
>212</span>
220 <span class='line'
>213</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'stroke'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
221 <span class='line'
>214</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.fill
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.fillStyle
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
222 <span class='line'
>215</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
223 <span class='line'
>216</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.fill
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'none'
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
224 <span class='line'
>217</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
225 <span class='line'
>218</span>
226 <span class='line'
>219</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'fill'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
227 <span class='line'
>220</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.stroke
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeStyle
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
228 <span class='line'
>221</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.strokeWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.lineWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
229 <span class='line'
>222</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
230 <span class='line'
>223</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.stroke
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'none'
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
231 <span class='line'
>224</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.strokeWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.lineWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
232 <span class='line'
>225</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
233 <span class='line'
>226</span>
234 <span class='line'
>227</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">svgText.getComputedTextLength
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
235 <span class='line'
>228</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">svgText.getBBox
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">.
</span><span class=
"NAME">height
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
236 <span class='line'
>229</span>
237 <span class='line'
>230</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'width'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
238 <span class='line'
>231</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'height'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"NUMB">10</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
239 <span class='line'
>232</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'x'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
240 <span class='line'
>233</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'y'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
241 <span class='line'
>234</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
242 <span class='line'
>235</span>
243 <span class='line'
>236</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
244 <span class='line'
>237</span> * The
<code
>configChange
</code
> application event handler. This is also the
245 <span class='line'
>238</span> *
<code
>input
</code
> and
<code
>change
</code
> event handler for the text
246 <span class='line'
>239</span> * string input element. This method updates the Canvas text-related
247 <span class='line'
>240</span> * properties as needed, and re-renders the text.
248 <span class='line'
>241</span> *
249 <span class='line'
>242</span> *
<p
>This function is not used on Opera.
250 <span class='line'
>243</span> *
251 <span class='line'
>244</span> * @param {Event|pwlib.appEvent.configChange} ev The application/DOM event
252 <span class='line'
>245</span> * object.
253 <span class='line'
>246</span> */
</span><span class=
"WHIT">
254 <span class='line'
>247</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
255 <span class='line'
>248</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'input'
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'change'
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT">
256 <span class='line'
>249</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'shapeType'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT">
257 <span class='line'
>250</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'line'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'lineWidth'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
258 <span class='line'
>251</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
259 <span class='line'
>252</span>
260 <span class='line'
>253</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Update the text width.
</span><span class=
"WHIT">
261 <span class='line'
>254</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">context.mozMeasureText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
262 <span class='line'
>255</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.mozMeasureText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
263 <span class='line'
>256</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
264 <span class='line'
>257</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
265 <span class='line'
>258</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
266 <span class='line'
>259</span>
267 <span class='line'
>260</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'configChange'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'text'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
268 <span class='line'
>261</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
269 <span class='line'
>262</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
270 <span class='line'
>263</span>
271 <span class='line'
>264</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">''
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
272 <span class='line'
>265</span>
273 <span class='line'
>266</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">switch
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.config
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
274 <span class='line'
>267</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'fontFamily'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
275 <span class='line'
>268</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'+'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
276 <span class='line'
>269</span> </span><span class=
"WHIT"> </span><span class=
"NAME">fontFamilyAdd
</span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
277 <span class='line'
>270</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
278 <span class='line'
>271</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'bold'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
279 <span class='line'
>272</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'italic'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
280 <span class='line'
>273</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'fontSize'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
281 <span class='line'
>274</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.bold
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
282 <span class='line'
>275</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'bold '
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
283 <span class='line'
>276</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
284 <span class='line'
>277</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.italic
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
285 <span class='line'
>278</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'italic '
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
286 <span class='line'
>279</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
287 <span class='line'
>280</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontSize
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"STRN">'px '
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
288 <span class='line'
>281</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
289 <span class='line'
>282</span>
290 <span class='line'
>283</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"STRN">'mozTextStyle'
</span><span class=
"WHIT"> </span><span class=
"KEYW">in
</span><span class=
"WHIT"> </span><span class=
"NAME">context
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
291 <span class='line'
>284</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.mozTextStyle
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
292 <span class='line'
>285</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
293 <span class='line'
>286</span>
294 <span class='line'
>287</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'textAlign'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
295 <span class='line'
>288</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'textBaseline'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
296 <span class='line'
>289</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
297 <span class='line'
>290</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
298 <span class='line'
>291</span>
299 <span class='line'
>292</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Update the text width.
</span><span class=
"WHIT">
300 <span class='line'
>293</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'textAlign'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'textBaseline'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT">
301 <span class='line'
>294</span> </span><span class=
"PUNC">!
</span><span class=
"NAME">context.fillText
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">context.mozMeasureText
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
302 <span class='line'
>295</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.mozMeasureText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
303 <span class='line'
>296</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
304 <span class='line'
>297</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
305 <span class='line'
>298</span>
306 <span class='line'
>299</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
307 <span class='line'
>300</span> * The
<code
>configChange
</code
> application event handler. This is also the
308 <span class='line'
>301</span> *
<code
>input
</code
> and
<code
>change
</code
> event handler for the text
309 <span class='line'
>302</span> * string input element. This method updates the Canvas text-related
310 <span class='line'
>303</span> * properties as needed, and re-renders the text.
311 <span class='line'
>304</span> *
312 <span class='line'
>305</span> *
<p
>This is function is specific to Opera.
313 <span class='line'
>306</span> *
314 <span class='line'
>307</span> * @param {Event|pwlib.appEvent.configChange} ev The application/DOM event
315 <span class='line'
>308</span> * object.
316 <span class='line'
>309</span> */
</span><span class=
"WHIT">
317 <span class='line'
>310</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"NAME">ev_configChange_opera
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
318 <span class='line'
>311</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'input'
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'change'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
319 <span class='line'
>312</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.replaceChild
</span><span class=
"PUNC">(
</span><span class=
"NAME">doc.createTextNode
</span><span class=
"PUNC">(
</span><span class=
"NAME">this.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">svgText.firstChild
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
320 <span class='line'
>313</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
321 <span class='line'
>314</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
322 <span class='line'
>315</span>
323 <span class='line'
>316</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'shapeType'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
324 <span class='line'
>317</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'stroke'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
325 <span class='line'
>318</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.fill
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.fillStyle
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
326 <span class='line'
>319</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
327 <span class='line'
>320</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.fill
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'none'
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
328 <span class='line'
>321</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
329 <span class='line'
>322</span>
330 <span class='line'
>323</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'fill'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
331 <span class='line'
>324</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.stroke
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeStyle
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
332 <span class='line'
>325</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.strokeWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.lineWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
333 <span class='line'
>326</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
334 <span class='line'
>327</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.stroke
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'none'
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
335 <span class='line'
>328</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.strokeWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.lineWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
336 <span class='line'
>329</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
337 <span class='line'
>330</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
338 <span class='line'
>331</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
339 <span class='line'
>332</span>
340 <span class='line'
>333</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'fillStyle'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
341 <span class='line'
>334</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'stroke'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
342 <span class='line'
>335</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.fill
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.value
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
343 <span class='line'
>336</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
344 <span class='line'
>337</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
345 <span class='line'
>338</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
346 <span class='line'
>339</span>
347 <span class='line'
>340</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'strokeStyle'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT">
348 <span class='line'
>341</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'line'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.config
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'lineWidth'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
349 <span class='line'
>342</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!==
</span><span class=
"WHIT"> </span><span class=
"STRN">'fill'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
350 <span class='line'
>343</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.stroke
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeStyle
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
351 <span class='line'
>344</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.strokeWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">context.lineWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
352 <span class='line'
>345</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
353 <span class='line'
>346</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
354 <span class='line'
>347</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
355 <span class='line'
>348</span>
356 <span class='line'
>349</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.type
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'configChange'
</span><span class=
"WHIT"> </span><span class=
"PUNC">&&
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.group
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'text'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
357 <span class='line'
>350</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">''
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
358 <span class='line'
>351</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">switch
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.config
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
359 <span class='line'
>352</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'fontFamily'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
360 <span class='line'
>353</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'+'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
361 <span class='line'
>354</span> </span><span class=
"WHIT"> </span><span class=
"NAME">fontFamilyAdd
</span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
362 <span class='line'
>355</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
363 <span class='line'
>356</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'bold'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
364 <span class='line'
>357</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'italic'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
365 <span class='line'
>358</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'fontSize'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
366 <span class='line'
>359</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.bold
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
367 <span class='line'
>360</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'bold '
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
368 <span class='line'
>361</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
369 <span class='line'
>362</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.italic
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
370 <span class='line'
>363</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"STRN">'italic '
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
371 <span class='line'
>364</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
372 <span class='line'
>365</span> </span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontSize
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"STRN">'px '
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
373 <span class='line'
>366</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
374 <span class='line'
>367</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.style.font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
375 <span class='line'
>368</span>
376 <span class='line'
>369</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'textAlign'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
377 <span class='line'
>370</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">case
</span><span class=
"WHIT"> </span><span class=
"STRN">'textBaseline'
</span><span class=
"PUNC">:
</span><span class=
"WHIT">
378 <span class='line'
>371</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
379 <span class='line'
>372</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
380 <span class='line'
>373</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
381 <span class='line'
>374</span>
382 <span class='line'
>375</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">svgText.getComputedTextLength
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
383 <span class='line'
>376</span> </span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">svgText.getBBox
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">.
</span><span class=
"NAME">height
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
384 <span class='line'
>377</span>
385 <span class='line'
>378</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'width'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
386 <span class='line'
>379</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgDoc.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'height'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"WHIT"> </span><span class=
"NUMB">10</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
387 <span class='line'
>380</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'x'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
388 <span class='line'
>381</span> </span><span class=
"WHIT"> </span><span class=
"NAME">svgText.setAttributeNS
</span><span class=
"PUNC">(
</span><span class=
"NAME">ns_svg
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">'y'
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
389 <span class='line'
>382</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
390 <span class='line'
>383</span>
391 <span class='line'
>384</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
392 <span class='line'
>385</span> * Add a new font family into the font family drop down. This function is
393 <span class='line'
>386</span> * invoked by the
<code
>ev_configChange()
</code
> function when the user
394 <span class='line'
>387</span> * attempts to add a new font family.
395 <span class='line'
>388</span> *
396 <span class='line'
>389</span> * @private
397 <span class='line'
>390</span> *
398 <span class='line'
>391</span> * @param {pwlib.appEvent.configChange} ev The application event object.
399 <span class='line'
>392</span> */
</span><span class=
"WHIT">
400 <span class='line'
>393</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"NAME">fontFamilyAdd
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
401 <span class='line'
>394</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">prompt
</span><span class=
"PUNC">(
</span><span class=
"NAME">lang.promptTextFont
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT"> </span><span class=
"STRN">''
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
402 <span class='line'
>395</span> </span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font.replace
</span><span class=
"PUNC">(
</span><span class=
"REGX">/^\s+/
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">''
</span><span class=
"PUNC">)
</span><span class=
"PUNC">.
</span><span class=
"NAME">replace
</span><span class=
"PUNC">(
</span><span class=
"REGX">/\s+$/
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"STRN">''
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT">
403 <span class='line'
>396</span> </span><span class=
"NAME">ev.previousValue
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
404 <span class='line'
>397</span>
405 <span class='line'
>398</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Check if the font name is already in the list.
</span><span class=
"WHIT">
406 <span class='line'
>399</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">opt
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font2
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font.toLowerCase
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
407 <span class='line'
>400</span> </span><span class=
"WHIT"> </span><span class=
"NAME">n
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.options.length
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
408 <span class='line'
>401</span>
409 <span class='line'
>402</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">for
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">i
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">;
</span><span class=
"WHIT"> </span><span class=
"NAME">i
</span><span class=
"WHIT"> </span><span class=
"PUNC"><</span><span class=
"WHIT"> </span><span class=
"NAME">n
</span><span class=
"PUNC">;
</span><span class=
"WHIT"> </span><span class=
"NAME">i
</span><span class=
"PUNC">++
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
410 <span class='line'
>403</span> </span><span class=
"WHIT"> </span><span class=
"NAME">opt
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.options
</span><span class=
"PUNC">[
</span><span class=
"NAME">i
</span><span class=
"PUNC">]
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
411 <span class='line'
>404</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">opt.value.toLowerCase
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">==
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font2
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
412 <span class='line'
>405</span> </span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">opt.value
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
413 <span class='line'
>406</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.selectedIndex
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">i
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
414 <span class='line'
>407</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
415 <span class='line'
>408</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
416 <span class='line'
>409</span>
417 <span class='line'
>410</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
418 <span class='line'
>411</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
419 <span class='line'
>412</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
420 <span class='line'
>413</span>
421 <span class='line'
>414</span> </span><span class=
"WHIT"> </span><span class=
"COMM">// Add the new font.
</span><span class=
"WHIT">
422 <span class='line'
>415</span> </span><span class=
"WHIT"> </span><span class=
"NAME">opt
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">doc.createElement
</span><span class=
"PUNC">(
</span><span class=
"STRN">'option'
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
423 <span class='line'
>416</span> </span><span class=
"WHIT"> </span><span class=
"NAME">opt.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
424 <span class='line'
>417</span> </span><span class=
"WHIT"> </span><span class=
"NAME">opt.appendChild
</span><span class=
"PUNC">(
</span><span class=
"NAME">doc.createTextNode
</span><span class=
"PUNC">(
</span><span class=
"NAME">new_font
</span><span class=
"PUNC">)
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
425 <span class='line'
>418</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.insertBefore
</span><span class=
"PUNC">(
</span><span class=
"NAME">opt
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.options
</span><span class=
"PUNC">[
</span><span class=
"NAME">n
</span><span class=
"PUNC">-
</span><span class=
"NUMB">1</span><span class=
"PUNC">]
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
426 <span class='line'
>419</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.selectedIndex
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">n
</span><span class=
"PUNC">-
</span><span class=
"NUMB">1</span><span class=
"PUNC">;
</span><span class=
"WHIT">
427 <span class='line'
>420</span> </span><span class=
"WHIT"> </span><span class=
"NAME">input_fontFamily.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
428 <span class='line'
>421</span> </span><span class=
"WHIT"> </span><span class=
"NAME">ev.value
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
429 <span class='line'
>422</span> </span><span class=
"WHIT"> </span><span class=
"NAME">config.fontFamily
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">new_font
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
430 <span class='line'
>423</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
431 <span class='line'
>424</span>
432 <span class='line'
>425</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
433 <span class='line'
>426</span> * The
<code
>mousemove
</code
> event handler.
434 <span class='line'
>427</span> */
</span><span class=
"WHIT">
435 <span class='line'
>428</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.mousemove
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
436 <span class='line'
>429</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
437 <span class='line'
>430</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
438 <span class='line'
>431</span>
439 <span class='line'
>432</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
440 <span class='line'
>433</span> * Perform the drawing operation using standard
2D context methods.
441 <span class='line'
>434</span> *
442 <span class='line'
>435</span> * @see PaintWeb.config.toolDrawDelay
443 <span class='line'
>436</span> */
</span><span class=
"WHIT">
444 <span class='line'
>437</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.draw_spec
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
445 <span class='line'
>438</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">needsRedraw
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
446 <span class='line'
>439</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
447 <span class='line'
>440</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
448 <span class='line'
>441</span>
449 <span class='line'
>442</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.clearRect
</span><span class=
"PUNC">(
</span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.width
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.height
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
450 <span class='line'
>443</span>
451 <span class='line'
>444</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!=
</span><span class=
"WHIT"> </span><span class=
"STRN">'stroke'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
452 <span class='line'
>445</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.fillText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.x
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.y
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
453 <span class='line'
>446</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
454 <span class='line'
>447</span>
455 <span class='line'
>448</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!=
</span><span class=
"WHIT"> </span><span class=
"STRN">'fill'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
456 <span class='line'
>449</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.strokeText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.x
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.y
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
457 <span class='line'
>450</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
458 <span class='line'
>451</span>
459 <span class='line'
>452</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
460 <span class='line'
>453</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
461 <span class='line'
>454</span>
462 <span class='line'
>455</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
463 <span class='line'
>456</span> * Perform the drawing operation in Gecko
1.9.0.
464 <span class='line'
>457</span> */
</span><span class=
"WHIT">
465 <span class='line'
>458</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.draw_moz
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
466 <span class='line'
>459</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">needsRedraw
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
467 <span class='line'
>460</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
468 <span class='line'
>461</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
469 <span class='line'
>462</span>
470 <span class='line'
>463</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.clearRect
</span><span class=
"PUNC">(
</span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.width
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.height
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
471 <span class='line'
>464</span>
472 <span class='line'
>465</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.x
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
473 <span class='line'
>466</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.y
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
474 <span class='line'
>467</span>
475 <span class='line'
>468</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textAlign
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'center'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
476 <span class='line'
>469</span> </span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">MathRound
</span><span class=
"PUNC">(
</span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NUMB">2</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
477 <span class='line'
>470</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textAlign
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'right'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
478 <span class='line'
>471</span> </span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
479 <span class='line'
>472</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
480 <span class='line'
>473</span>
481 <span class='line'
>474</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textBaseline
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'top'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
482 <span class='line'
>475</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">config.fontSize
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
483 <span class='line'
>476</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textBaseline
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'middle'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
484 <span class='line'
>477</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">+
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">MathRound
</span><span class=
"PUNC">(
</span><span class=
"NAME">config.fontSize
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NUMB">2</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
485 <span class='line'
>478</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
486 <span class='line'
>479</span>
487 <span class='line'
>480</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.setTransform
</span><span class=
"PUNC">(
</span><span class=
"NUMB">1</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">1</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
488 <span class='line'
>481</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.beginPath
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
489 <span class='line'
>482</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.mozPathText
</span><span class=
"PUNC">(
</span><span class=
"NAME">inputString.value
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
490 <span class='line'
>483</span>
491 <span class='line'
>484</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!=
</span><span class=
"WHIT"> </span><span class=
"STRN">'stroke'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
492 <span class='line'
>485</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.fill
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
493 <span class='line'
>486</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
494 <span class='line'
>487</span>
495 <span class='line'
>488</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">app.config.shapeType
</span><span class=
"WHIT"> </span><span class=
"PUNC">!=
</span><span class=
"WHIT"> </span><span class=
"STRN">'fill'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
496 <span class='line'
>489</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.stroke
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
497 <span class='line'
>490</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
498 <span class='line'
>491</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.closePath
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
499 <span class='line'
>492</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.setTransform
</span><span class=
"PUNC">(
</span><span class=
"NUMB">1</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">1</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
500 <span class='line'
>493</span>
501 <span class='line'
>494</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
502 <span class='line'
>495</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
503 <span class='line'
>496</span>
504 <span class='line'
>497</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
505 <span class='line'
>498</span> * Perform the drawing operation in Opera using SVG.
506 <span class='line'
>499</span> */
</span><span class=
"WHIT">
507 <span class='line'
>500</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.draw_opera
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
508 <span class='line'
>501</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">needsRedraw
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
509 <span class='line'
>502</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
510 <span class='line'
>503</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
511 <span class='line'
>504</span>
512 <span class='line'
>505</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.clearRect
</span><span class=
"PUNC">(
</span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NUMB">0</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.width
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">image.height
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
513 <span class='line'
>506</span>
514 <span class='line'
>507</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">var
</span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.x
</span><span class=
"PUNC">,
</span><span class=
"WHIT">
515 <span class='line'
>508</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">mouse.y
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
516 <span class='line'
>509</span>
517 <span class='line'
>510</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textAlign
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'center'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
518 <span class='line'
>511</span> </span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">MathRound
</span><span class=
"PUNC">(
</span><span class=
"NAME">textWidth
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NUMB">2</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
519 <span class='line'
>512</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textAlign
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'right'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
520 <span class='line'
>513</span> </span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">textWidth
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
521 <span class='line'
>514</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
522 <span class='line'
>515</span>
523 <span class='line'
>516</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textBaseline
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'bottom'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
524 <span class='line'
>517</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">textHeight
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
525 <span class='line'
>518</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT"> </span><span class=
"KEYW">else
</span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">config.textBaseline
</span><span class=
"WHIT"> </span><span class=
"PUNC">===
</span><span class=
"WHIT"> </span><span class=
"STRN">'middle'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
526 <span class='line'
>519</span> </span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"WHIT"> </span><span class=
"PUNC">-
</span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"NAME">MathRound
</span><span class=
"PUNC">(
</span><span class=
"NAME">textHeight
</span><span class=
"WHIT"> </span><span class=
"PUNC">/
</span><span class=
"WHIT"> </span><span class=
"NUMB">2</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
527 <span class='line'
>520</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
528 <span class='line'
>521</span>
529 <span class='line'
>522</span> </span><span class=
"WHIT"> </span><span class=
"NAME">context.drawImage
</span><span class=
"PUNC">(
</span><span class=
"NAME">svgDoc
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">x
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">y
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
530 <span class='line'
>523</span>
531 <span class='line'
>524</span> </span><span class=
"WHIT"> </span><span class=
"NAME">needsRedraw
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
532 <span class='line'
>525</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
533 <span class='line'
>526</span>
534 <span class='line'
>527</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
535 <span class='line'
>528</span> * The
<code
>click
</code
> event handler. This method completes the drawing
536 <span class='line'
>529</span> * operation by inserting the text into the layer canvas.
537 <span class='line'
>530</span> */
</span><span class=
"WHIT">
538 <span class='line'
>531</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.click
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
539 <span class='line'
>532</span> </span><span class=
"WHIT"> </span><span class=
"NAME">_self.draw
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
540 <span class='line'
>533</span> </span><span class=
"WHIT"> </span><span class=
"NAME">app.layerUpdate
</span><span class=
"PUNC">(
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
541 <span class='line'
>534</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
542 <span class='line'
>535</span>
543 <span class='line'
>536</span> </span><span class=
"WHIT"> </span><span class=
"COMM">/**
544 <span class='line'
>537</span> * The
<code
>keydown
</code
> event handler allows users to press the
545 <span class='line'
>538</span> *
<kbd
>Escape
</kbd
> key to cancel the drawing operation and return to the
546 <span class='line'
>539</span> * previous tool.
547 <span class='line'
>540</span> *
548 <span class='line'
>541</span> * @param {Event} ev The DOM Event object.
549 <span class='line'
>542</span> * @returns {Boolean} True if the key was recognized, or false if not.
550 <span class='line'
>543</span> */
</span><span class=
"WHIT">
551 <span class='line'
>544</span> </span><span class=
"WHIT"> </span><span class=
"NAME">this.keydown
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">function
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
552 <span class='line'
>545</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">if
</span><span class=
"WHIT"> </span><span class=
"PUNC">(
</span><span class=
"PUNC">!
</span><span class=
"NAME">prevTool
</span><span class=
"WHIT"> </span><span class=
"PUNC">||
</span><span class=
"WHIT"> </span><span class=
"NAME">ev.kid_
</span><span class=
"WHIT"> </span><span class=
"PUNC">!=
</span><span class=
"WHIT"> </span><span class=
"STRN">'Escape'
</span><span class=
"PUNC">)
</span><span class=
"WHIT"> </span><span class=
"PUNC">{
</span><span class=
"WHIT">
553 <span class='line'
>546</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
554 <span class='line'
>547</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"WHIT">
555 <span class='line'
>548</span>
556 <span class='line'
>549</span> </span><span class=
"WHIT"> </span><span class=
"NAME">mouse.buttonDown
</span><span class=
"WHIT"> </span><span class=
"PUNC">=
</span><span class=
"WHIT"> </span><span class=
"KEYW">false
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
557 <span class='line'
>550</span> </span><span class=
"WHIT"> </span><span class=
"NAME">app.toolActivate
</span><span class=
"PUNC">(
</span><span class=
"NAME">prevTool
</span><span class=
"PUNC">,
</span><span class=
"WHIT"> </span><span class=
"NAME">ev
</span><span class=
"PUNC">)
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
558 <span class='line'
>551</span>
559 <span class='line'
>552</span> </span><span class=
"WHIT"> </span><span class=
"KEYW">return
</span><span class=
"WHIT"> </span><span class=
"KEYW">true
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
560 <span class='line'
>553</span> </span><span class=
"WHIT"> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
561 <span class='line'
>554</span> </span><span class=
"PUNC">}
</span><span class=
"PUNC">;
</span><span class=
"WHIT">
562 <span class='line'
>555</span>
563 <span class='line'
>556</span> </span><span class=
"COMM">// vim:set spell spl=en fo=wan1croqlt tw=
80 ts=
2 sw=
2 sts=
2 sta et ai cin fenc=utf-
8 ff=unix:
</span><span class=
"WHIT">
564 <span class='line'
>557</span>
565 <span class='line'
>558</span> </span></pre></body></html>