summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM
Unidiff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js4
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js32
2 files changed, 32 insertions, 4 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
index 5e49fb5..3c57f67 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
@@ -4,108 +4,108 @@ Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz, the online password manager. 5This file is part of Clipperz, the online password manager.
6For further information about its features and functionalities please 6For further information about its features and functionalities please
7refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
8 8
9* Clipperz is free software: you can redistribute it and/or modify it 9* Clipperz is free software: you can redistribute it and/or modify it
10 under the terms of the GNU Affero General Public License as published 10 under the terms of the GNU Affero General Public License as published
11 by the Free Software Foundation, either version 3 of the License, or 11 by the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version. 12 (at your option) any later version.
13 13
14* Clipperz is distributed in the hope that it will be useful, but 14* Clipperz is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of 15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
18 18
19* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
20 License along with Clipperz. If not, see http://www.gnu.org/licenses/. 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 21
22*/ 22*/
23 23
24Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 24Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
25 25
26Clipperz.PM.UI.Web.Components.PageHeader = function(args) { 26Clipperz.PM.UI.Web.Components.PageHeader = function(args) {
27 args = args || {}; 27 args = args || {};
28 28
29 Clipperz.PM.UI.Web.Components.PageHeader.superclass.constructor.apply(this, arguments); 29 Clipperz.PM.UI.Web.Components.PageHeader.superclass.constructor.apply(this, arguments);
30 this._newsIsOpen = args.newsIsOpen || false; 30 this._newsIsOpen = args.newsIsOpen || false;
31 this._animationDuration = args.animationDuration || 0.5; 31 this._animationDuration = args.animationDuration || 0.5;
32 32
33 this._offset = 82; 33 this._offset = 82;
34 34
35 return this; 35 return this;
36} 36}
37 37
38//============================================================================= 38//=============================================================================
39 39
40Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageHeader, Clipperz.PM.UI.Common.Components.BaseComponent, { 40Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageHeader, Clipperz.PM.UI.Common.Components.BaseComponent, {
41 41
42 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
43 43
44 'toString': function () { 44 'toString': function () {
45 return "Clipperz.PM.UI.Web.Components.PageHeader component"; 45 return "Clipperz.PM.UI.Web.Components.PageHeader component";
46 }, 46 },
47 47
48 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
49 49
50 'iframeURL': function () { 50 'iframeURL': function () {
51 // return './rss_view.html'; 51 // return './rss_view.html';
52 return 'http://www.clipperz.com/files/clipperz.com/appTips/index.html'; 52 return 'https://www.clipperz.com/tips/index.html';
53 }, 53 },
54 54
55 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
56 56
57 'renderSelf': function(/*aContainer, aPosition*/) { 57 'renderSelf': function(/*aContainer, aPosition*/) {
58 this.append(this.element(), [ 58 this.append(this.element(), [
59 {tag:'div', id:'miscLinks', children:[ 59 {tag:'div', id:'miscLinks', children:[
60 {tag:'ul', children:[ 60 {tag:'ul', children:[
61 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', stringID:'pageHeader.donation', href:'http://www.clipperz.com/donations', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.donation')}]}, 61 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', stringID:'pageHeader.donation', href:'http://www.clipperz.com/donations', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.donation')}]},
62 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', stringID:'pageHeader.forum', href:'http://www.clipperz.com/forum', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.forum')}]}, 62 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', stringID:'pageHeader.forum', href:'http://www.clipperz.com/forum', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.forum')}]},
63 {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', stringID:'pageHeader.credits', href:'http://www.clipperz.com/credits', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.credits')}]}, 63 // {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', stringID:'pageHeader.credits', href:'http://www.clipperz.com/credits', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.credits')}]},
64 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', stringID:'pageHeader.feedback', href:'http://www.clipperz.com/contact', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.feedback')}]}, 64 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', stringID:'pageHeader.feedback', href:'http://www.clipperz.com/contact', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.feedback')}]},
65 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', stringID:'pageHeader.help', href:'http://www.clipperz.com/support/user_guide',target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.help')}]} 65 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', stringID:'pageHeader.help', href:'http://www.clipperz.com/support/user_guide',target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.help')}]}
66 ]} 66 ]}
67 ]}, 67 ]},
68 {tag:'div', id:'logoFrame', children:[ 68 {tag:'div', id:'logoFrame', children:[
69 {tag:'a', href:'http://www.clipperz.com', target:'_blank', children:[ 69 {tag:'a', href:'http://www.clipperz.com', target:'_blank', children:[
70 // {tag:'h1', cls:'logo', html:"clipperz"}, 70 // {tag:'h1', cls:'logo', html:"clipperz"},
71 {tag:'canvas', id:this.getId('logo'), cls:'logo'}, 71 {tag:'canvas', id:this.getId('logo'), cls:'logo'},
72 {tag:'h5', cls:'clipperzPayoff', html:"keep it to yourself!"} 72 {tag:'h5', cls:'clipperzPayoff', html:"keep it to yourself!"}
73 ]} 73 ]}
74 ]}, 74 ]},
75 {tag:'div', id:'news', cls:'hidden', children:[ 75 {tag:'div', id:'news', cls:'hidden', children:[
76 // {tag:'div', cls:'close', children:[ 76 // {tag:'div', cls:'close', children:[
77 // {tag:'a', href:'#', id:this.getId('closeTips'), html:'x'} 77 // {tag:'a', href:'#', id:this.getId('closeTips'), html:'x'}
78 // ]}, 78 // ]},
79 {tag:'div', id:'newsframe', children:[ 79 {tag:'div', id:'newsframe', children:[
80 {tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()} 80 {tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()}
81 ]}, 81 ]},
82 {tag:'div', id:this.getId('newsGrip'), cls:'grip', children:[ 82 {tag:'div', id:this.getId('newsGrip'), cls:'grip', children:[
83 {tag:'div', cls:'gripHandler', children:[]} 83 {tag:'div', cls:'gripHandler', children:[]}
84 ]} 84 ]}
85 ]}, 85 ]},
86 {tag:'div', id:'featureTabs', children:[ 86 {tag:'div', id:'featureTabs', children:[
87 {tag:'table', children:[{tag:'tr', children:[ 87 {tag:'table', children:[{tag:'tr', children:[
88 {tag:'td', children:[{tag:'div', id:'feature_store', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('storeIcon')}, {tag:'span', html:"Store and manage your password and online credentials"}]}]}, 88 {tag:'td', children:[{tag:'div', id:'feature_store', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('storeIcon')}, {tag:'span', html:"Store and manage your password and online credentials"}]}]},
89 {tag:'td', children:[{tag:'div', id:'feature_protect', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('protectIcon')}, {tag:'span', html:"Protect all your sensitive data"}]}]}, 89 {tag:'td', children:[{tag:'div', id:'feature_protect', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('protectIcon')}, {tag:'span', html:"Protect all your sensitive data"}]}]},
90 {tag:'td', children:[{tag:'div', id:'feature_directLogin', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('directLoginIcon')},{tag:'span', html:"Login to your web services without entering any username or password"}]}]}, 90 {tag:'td', children:[{tag:'div', id:'feature_directLogin', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('directLoginIcon')},{tag:'span', html:"Login to your web services without entering any username or password"}]}]},
91 {tag:'td', children:[{tag:'div', id:'feature_share', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('shareIcon')}, {tag:'span', html:"Share secret with family members and associates"}]}]} 91 {tag:'td', children:[{tag:'div', id:'feature_share', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('shareIcon')}, {tag:'span', html:"Share secret with family members and associates"}]}]}
92 ]}]} 92 ]}]}
93 ]} 93 ]}
94 ]); 94 ]);
95 95
96 Clipperz.PM.UI.Canvas.features.store(this.getElement('storeIcon'), "#ffffff"); 96 Clipperz.PM.UI.Canvas.features.store(this.getElement('storeIcon'), "#ffffff");
97 Clipperz.PM.UI.Canvas.features.protect(this.getElement('protectIcon'), "#ffffff"); 97 Clipperz.PM.UI.Canvas.features.protect(this.getElement('protectIcon'), "#ffffff");
98 Clipperz.PM.UI.Canvas.features.directLogin(this.getElement('directLoginIcon'), "#ffffff"); 98 Clipperz.PM.UI.Canvas.features.directLogin(this.getElement('directLoginIcon'), "#ffffff");
99 Clipperz.PM.UI.Canvas.features.share(this.getElement('shareIcon'), "#ffffff", "#ffffff", "#ff0000"); 99 Clipperz.PM.UI.Canvas.features.share(this.getElement('shareIcon'), "#ffffff", "#ffffff", "#ff0000");
100 100
101 MochiKit.Signal.connect(this.getElement('newsGrip'), 'onclick', this, 'toggleTips'); 101 MochiKit.Signal.connect(this.getElement('newsGrip'), 'onclick', this, 'toggleTips');
102 MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad'); 102 MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad');
103 this.setLogoDefaultColors(); 103 this.setLogoDefaultColors();
104 }, 104 },
105 105
106 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
107 107
108 'switchToLoggedMode': function() { 108 'switchToLoggedMode': function() {
109 // MochiKit.Style.addElementClass(this.element(), 'logged'); 109 // MochiKit.Style.addElementClass(this.element(), 'logged');
110 MochiKit.Style.hideElement('featureTabs'); 110 MochiKit.Style.hideElement('featureTabs');
111 }, 111 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
index fbf58e0..91085cf 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
@@ -121,121 +121,149 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UserInfoBox, Clipperz.PM.UI.C
121 varunlockPasswordComponent; 121 varunlockPasswordComponent;
122/* 122/*
123 vardeferredResult; 123 vardeferredResult;
124 124
125 deferredResult = new Clipperz.Async.Deferred("UserInfoBox.askForPassphrase", {trace:false}); 125 deferredResult = new Clipperz.Async.Deferred("UserInfoBox.askForPassphrase", {trace:false});
126 deferredResult.addCallback(MochiKit.Async.succeed, 'test'); 126 deferredResult.addCallback(MochiKit.Async.succeed, 'test');
127 127
128 deferredResult.callback(); 128 deferredResult.callback();
129 129
130 return deferredResult; 130 return deferredResult;
131*/ 131*/
132 unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({ 132 unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({
133 'title':"Unlock account", 133 'title':"Unlock account",
134 'text': "Insert the passprase to unlock the account", 134 'text': "Insert the passprase to unlock the account",
135 'type': 'INFO', 135 'type': 'INFO',
136 'buttons': [ 136 'buttons': [
137 {text:"Cancel",result:'CANCEL'}, 137 {text:"Cancel",result:'CANCEL'},
138 {text:"Unlock", result:'OK',isDefault:true} 138 {text:"Unlock", result:'OK',isDefault:true}
139 ], 139 ],
140 'openFromElement': this.getElement('lock'), 140 'openFromElement': this.getElement('lock'),
141 'onOkCloseToElement': null, 141 'onOkCloseToElement': null,
142 'onCancelCloseToElement':this.getId('lock') 142 'onCancelCloseToElement':this.getId('lock')
143 }); 143 });
144 144
145 return unlockPasswordComponent.getPassphrase(); 145 return unlockPasswordComponent.getPassphrase();
146 }, 146 },
147 147
148 //========================================================================= 148 //=========================================================================
149 149
150 'renderSelf': function(/*aContainer, aPosition*/) { 150 'renderSelf': function(/*aContainer, aPosition*/) {
151 this.append(this.element(), [ 151 this.append(this.element(), [
152 // {tag:'canvas', id:this.getId('canvas'), cls:'canvas', width:'188', height:'154'}, 152 // {tag:'canvas', id:this.getId('canvas'), cls:'canvas', width:'188', height:'154'},
153 {tag:'div', cls:'header', children:[ 153 {tag:'div', cls:'header', children:[
154 {tag:'h1', html:"Welcome"}, 154 {tag:'h1', html:"Welcome"},
155 {tag:'a', cls:'lockButton', href:'#', id:this.getId('lock'), html:' '} 155 {tag:'a', cls:'lockButton', href:'#', id:this.getId('lock'), html:' '}
156 ]}, 156 ]},
157 {tag:'div', cls:'body', children:[ 157 {tag:'div', cls:'body', children:[
158 {tag:'h3', id:this.getId('username'), html:""}, 158 {tag:'h3', id:this.getId('username'), html:""},
159 {tag:'ul', children:[ 159 {tag:'ul', children:[
160 {tag:'li', id:this.getId('cards'), children:[ 160 {tag:'li', id:this.getId('cards'), children:[
161 {tag:'span', id:this.getId('cardsNumber'), cls:'number', html:"-"}, 161 {tag:'span', id:this.getId('cardsNumber'), cls:'number', html:"-"},
162 {tag:'span', id:this.getId('cardsLabel'), html:"cards"} 162 {tag:'span', id:this.getId('cardsLabel'), html:"cards"}
163 ]}, 163 ]},
164 {tag:'li', id:this.getId('directLogins'), children:[ 164 {tag:'li', id:this.getId('directLogins'), children:[
165 {tag:'span', id:this.getId('directLoginsNumber'), cls:'number', html:"-"}, 165 {tag:'span', id:this.getId('directLoginsNumber'), cls:'number', html:"-"},
166 {tag:'span', id:this.getId('directLoginsLabel'), html:"direct logins"} 166 {tag:'span', id:this.getId('directLoginsLabel'), html:"direct logins"}
167 ]} 167 ]}
168 ]}, 168 ]},
169 {tag:'div', cls:'accountInfo', children:[
170 {tag:'div', cls:'payButton', children:[
171 {tag:'a', href:'#', id:this.getId('payButton'), cls:'info', html:"info"}
172 ]},
173 {tag:'h5', html:"Account info"},
174 {tag:'div', cls:'accountStatus', children:[
175 {tag:'span', cls:'label', html:"status"},
176 {tag:'span', cls:'status', html:"early adopter"}
177 ]},
178 {tag:'div', cls:'accountLevel', children:[
179 {tag:'span', cls:'label', html:"level"},
180 // {tag:'span', cls:'level', html:"★☆☆☆"}
181 {tag:'span', cls:'level', html:"☆☆☆☆"}
182 ]},
183 {tag:'div', cls:'accountExpiration', children:[
184 {tag:'span', cls:'label', html:"expires"},
185 // {tag:'span', cls:'expriation', html:"on 26 April 2014"}
186 {tag:'span', cls:'expriation', html:"never"}
187 ]}
188 ]},
169 {tag:'a', href:'#', id:this.getId('logout'), html:"logout >"} 189 {tag:'a', href:'#', id:this.getId('logout'), html:"logout >"}
170 ]}, 190 ]},
171 {tag:'div', cls:'footer'} 191 {tag:'div', cls:'footer'}
172 ]); 192 ]);
173 193
174 MochiKit.Signal.connect(this.getElement('logout'), 'onclick', this, 'handleLogout'); 194 MochiKit.Signal.connect(this.getElement('logout'), 'onclick', this, 'handleLogout');
175 MochiKit.Signal.connect(this.getElement('lock'), 'onclick', this, 'toggleLock'); 195 MochiKit.Signal.connect(this.getElement('lock'), 'onclick', this, 'toggleLock');
196 MochiKit.Signal.connect(this.getElement('payButton'),'onclick', this, 'handlePayButton');
176 197
177 this._lockTooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 198 this._lockTooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
178 element:this.getElement('lock'), 199 element:this.getElement('lock'),
179 text: "Click here to lock/unlock your account.", 200 text: "Click here to lock/unlock your account.",
180 position:'RIGHT' 201 position:'RIGHT'
181 }); 202 });
182 203
183 Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, 204 Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body,
184 {tag:'div', id:this.getId('modalDialogWrapper'), cls:'modalDialogWrapper', children:[ 205 {tag:'div', id:this.getId('modalDialogWrapper'), cls:'modalDialogWrapper', children:[
185 {tag:'div', id:this.getId('modalDialogMask'), cls:'modalDialogMask userInfoBoxMask'} 206 {tag:'div', id:this.getId('modalDialogMask'), cls:'modalDialogMask userInfoBoxMask'}
186 ]} 207 ]}
187 ); 208 );
188 MochiKit.Style.hideElement(this.getId('modalDialogMask')); 209 MochiKit.Style.hideElement(this.getId('modalDialogMask'));
189 210
190 // this.drawUserInfoBackground(this.getElement('canvas')); 211 // this.drawUserInfoBackground(this.getElement('canvas'));
191 }, 212 },
192 213
193 //------------------------------------------------------------------------- 214 //-------------------------------------------------------------------------
215
216 'handlePayButton': function (anEvent) {
217 anEvent.preventDefault();
218 window.open('https://www.clipperz.com/pricing/', '_blank');
219 },
220
221 //-------------------------------------------------------------------------
194/* 222/*
195 'drawUserInfoBackground': function (canvas) { 223 'drawUserInfoBackground': function (canvas) {
196 var kMyDrawingFunctionWidth = 188.0; 224 var kMyDrawingFunctionWidth = 188.0;
197 var kMyDrawingFunctionHeight = 154.0; 225 var kMyDrawingFunctionHeight = 154.0;
198 226
199 var context = canvas.getContext("2d"); 227 var context = canvas.getContext("2d");
200 var color; 228 var color;
201 var resolution; 229 var resolution;
202 var alignStroke; 230 var alignStroke;
203 var path; 231 var path;
204 var pointX; 232 var pointX;
205 var pointY; 233 var pointY;
206 var controlPoint1X; 234 var controlPoint1X;
207 var controlPoint1Y; 235 var controlPoint1Y;
208 var controlPoint2X; 236 var controlPoint2X;
209 var controlPoint2Y; 237 var controlPoint2Y;
210 var gradient; 238 var gradient;
211 if (window.devicePixelRatio) 239 if (window.devicePixelRatio)
212 resolution = window.devicePixelRatio; 240 resolution = window.devicePixelRatio;
213 else 241 else
214 resolution = 1.0; 242 resolution = 1.0;
215 resolution *= 0.5 * (canvas.width / kMyDrawingFunctionWidth + canvas.height / kMyDrawingFunctionHeight); 243 resolution *= 0.5 * (canvas.width / kMyDrawingFunctionWidth + canvas.height / kMyDrawingFunctionHeight);
216 244
217 context.save(); 245 context.save();
218 context.scale(canvas.width / kMyDrawingFunctionWidth, canvas.height / kMyDrawingFunctionHeight); 246 context.scale(canvas.width / kMyDrawingFunctionWidth, canvas.height / kMyDrawingFunctionHeight);
219 context.clearRect(0.0, 0.0, kMyDrawingFunctionWidth, kMyDrawingFunctionHeight); 247 context.clearRect(0.0, 0.0, kMyDrawingFunctionWidth, kMyDrawingFunctionHeight);
220 248
221 // Setup for Shadow Effect 249 // Setup for Shadow Effect
222 color = "rgba(0.0%, 0.0%, 0.0%, 0.667)"; 250 color = "rgba(0.0%, 0.0%, 0.0%, 0.667)";
223 context.save(); 251 context.save();
224 context.shadowColor = color; 252 context.shadowColor = color;
225 context.shadowBlur = 3.0; 253 context.shadowBlur = 3.0;
226 context.shadowOffsetX = 5.729 * Math.cos(7.592) * resolution; 254 context.shadowOffsetX = 5.729 * Math.cos(7.592) * resolution;
227 context.shadowOffsetY = 5.729 * Math.sin(7.592) * resolution; 255 context.shadowOffsetY = 5.729 * Math.sin(7.592) * resolution;
228 256
229 // Layer 1 257 // Layer 1
230 258
231 alignStroke = 0.0; 259 alignStroke = 0.0;
232 context.beginPath(); 260 context.beginPath();
233 pointX = 169.5; 261 pointX = 169.5;
234 pointY = 141.5; 262 pointY = 141.5;
235 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 263 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
236 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 264 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
237 context.moveTo(pointX, pointY); 265 context.moveTo(pointX, pointY);
238 pointX = 177.5; 266 pointX = 177.5;
239 pointY = 133.5; 267 pointY = 133.5;
240 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 268 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
241 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 269 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;