OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "fpdfsdk/include/pdfwindow/PWL_ScrollBar.h" | 7 #include "fpdfsdk/include/pdfwindow/PWL_ScrollBar.h" |
8 #include "fpdfsdk/include/pdfwindow/PWL_Utils.h" | 8 #include "fpdfsdk/include/pdfwindow/PWL_Utils.h" |
9 #include "fpdfsdk/include/pdfwindow/PWL_Wnd.h" | 9 #include "fpdfsdk/include/pdfwindow/PWL_Wnd.h" |
10 | 10 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 } | 125 } |
126 | 126 |
127 void CPWL_SBButton::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { | 127 void CPWL_SBButton::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { |
128 CPWL_Wnd::GetThisAppearanceStream(sAppStream); | 128 CPWL_Wnd::GetThisAppearanceStream(sAppStream); |
129 | 129 |
130 if (!IsVisible()) | 130 if (!IsVisible()) |
131 return; | 131 return; |
132 | 132 |
133 CFX_ByteTextBuf sButton; | 133 CFX_ByteTextBuf sButton; |
134 | 134 |
135 CPDF_Rect rectWnd = GetWindowRect(); | 135 CFX_FloatRect rectWnd = GetWindowRect(); |
136 | 136 |
137 if (rectWnd.IsEmpty()) | 137 if (rectWnd.IsEmpty()) |
138 return; | 138 return; |
139 | 139 |
140 sAppStream << "q\n"; | 140 sAppStream << "q\n"; |
141 | 141 |
142 CPDF_Point ptCenter = GetCenterPoint(); | 142 CFX_FloatPoint ptCenter = GetCenterPoint(); |
143 | 143 |
144 switch (m_eScrollBarType) { | 144 switch (m_eScrollBarType) { |
145 case SBT_HSCROLL: | 145 case SBT_HSCROLL: |
146 switch (m_eSBButtonType) { | 146 switch (m_eSBButtonType) { |
147 case PSBT_MIN: { | 147 case PSBT_MIN: { |
148 CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y); | 148 CFX_FloatPoint pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
149 CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, | 149 ptCenter.y); |
150 ptCenter.y + PWL_TRIANGLE_HALFLEN); | 150 CFX_FloatPoint pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
151 CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, | 151 ptCenter.y + PWL_TRIANGLE_HALFLEN); |
152 ptCenter.y - PWL_TRIANGLE_HALFLEN); | 152 CFX_FloatPoint pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
| 153 ptCenter.y - PWL_TRIANGLE_HALFLEN); |
153 | 154 |
154 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 155 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
155 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 156 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
156 sButton << "0 g\n"; | 157 sButton << "0 g\n"; |
157 sButton << pt1.x << " " << pt1.y << " m\n"; | 158 sButton << pt1.x << " " << pt1.y << " m\n"; |
158 sButton << pt2.x << " " << pt2.y << " l\n"; | 159 sButton << pt2.x << " " << pt2.y << " l\n"; |
159 sButton << pt3.x << " " << pt3.y << " l\n"; | 160 sButton << pt3.x << " " << pt3.y << " l\n"; |
160 sButton << pt1.x << " " << pt1.y << " l f\n"; | 161 sButton << pt1.x << " " << pt1.y << " l f\n"; |
161 | 162 |
162 sAppStream << sButton; | 163 sAppStream << sButton; |
163 } | 164 } |
164 } break; | 165 } break; |
165 case PSBT_MAX: { | 166 case PSBT_MAX: { |
166 CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y); | 167 CFX_FloatPoint pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
167 CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, | 168 ptCenter.y); |
168 ptCenter.y + PWL_TRIANGLE_HALFLEN); | 169 CFX_FloatPoint pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
169 CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, | 170 ptCenter.y + PWL_TRIANGLE_HALFLEN); |
170 ptCenter.y - PWL_TRIANGLE_HALFLEN); | 171 CFX_FloatPoint pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
| 172 ptCenter.y - PWL_TRIANGLE_HALFLEN); |
171 | 173 |
172 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 174 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
173 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 175 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
174 sButton << "0 g\n"; | 176 sButton << "0 g\n"; |
175 sButton << pt1.x << " " << pt1.y << " m\n"; | 177 sButton << pt1.x << " " << pt1.y << " m\n"; |
176 sButton << pt2.x << " " << pt2.y << " l\n"; | 178 sButton << pt2.x << " " << pt2.y << " l\n"; |
177 sButton << pt3.x << " " << pt3.y << " l\n"; | 179 sButton << pt3.x << " " << pt3.y << " l\n"; |
178 sButton << pt1.x << " " << pt1.y << " l f\n"; | 180 sButton << pt1.x << " " << pt1.y << " l f\n"; |
179 | 181 |
180 sAppStream << sButton; | 182 sAppStream << sButton; |
181 } | 183 } |
182 } break; | 184 } break; |
183 default: | 185 default: |
184 break; | 186 break; |
185 } | 187 } |
186 break; | 188 break; |
187 case SBT_VSCROLL: | 189 case SBT_VSCROLL: |
188 switch (m_eSBButtonType) { | 190 switch (m_eSBButtonType) { |
189 case PSBT_MIN: { | 191 case PSBT_MIN: { |
190 CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN, | 192 CFX_FloatPoint pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN, |
191 ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); | 193 ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); |
192 CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN, | 194 CFX_FloatPoint pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN, |
193 ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); | 195 ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); |
194 CPDF_Point pt3(ptCenter.x, ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); | 196 CFX_FloatPoint pt3(ptCenter.x, |
| 197 ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); |
195 | 198 |
196 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 199 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
197 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 200 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
198 sButton << "0 g\n"; | 201 sButton << "0 g\n"; |
199 sButton << pt1.x << " " << pt1.y << " m\n"; | 202 sButton << pt1.x << " " << pt1.y << " m\n"; |
200 sButton << pt2.x << " " << pt2.y << " l\n"; | 203 sButton << pt2.x << " " << pt2.y << " l\n"; |
201 sButton << pt3.x << " " << pt3.y << " l\n"; | 204 sButton << pt3.x << " " << pt3.y << " l\n"; |
202 sButton << pt1.x << " " << pt1.y << " l f\n"; | 205 sButton << pt1.x << " " << pt1.y << " l f\n"; |
203 | 206 |
204 sAppStream << sButton; | 207 sAppStream << sButton; |
205 } | 208 } |
206 } break; | 209 } break; |
207 case PSBT_MAX: { | 210 case PSBT_MAX: { |
208 CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN, | 211 CFX_FloatPoint pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN, |
209 ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); | 212 ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); |
210 CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN, | 213 CFX_FloatPoint pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN, |
211 ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); | 214 ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f); |
212 CPDF_Point pt3(ptCenter.x, ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); | 215 CFX_FloatPoint pt3(ptCenter.x, |
| 216 ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f); |
213 | 217 |
214 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 218 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
215 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 219 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
216 sButton << "0 g\n"; | 220 sButton << "0 g\n"; |
217 sButton << pt1.x << " " << pt1.y << " m\n"; | 221 sButton << pt1.x << " " << pt1.y << " m\n"; |
218 sButton << pt2.x << " " << pt2.y << " l\n"; | 222 sButton << pt2.x << " " << pt2.y << " l\n"; |
219 sButton << pt3.x << " " << pt3.y << " l\n"; | 223 sButton << pt3.x << " " << pt3.y << " l\n"; |
220 sButton << pt1.x << " " << pt1.y << " l f\n"; | 224 sButton << pt1.x << " " << pt1.y << " l f\n"; |
221 | 225 |
222 sAppStream << sButton; | 226 sAppStream << sButton; |
223 } | 227 } |
224 } break; | 228 } break; |
225 default: | 229 default: |
226 break; | 230 break; |
227 } | 231 } |
228 break; | 232 break; |
229 default: | 233 default: |
230 break; | 234 break; |
231 } | 235 } |
232 | 236 |
233 sAppStream << "Q\n"; | 237 sAppStream << "Q\n"; |
234 } | 238 } |
235 | 239 |
236 void CPWL_SBButton::DrawThisAppearance(CFX_RenderDevice* pDevice, | 240 void CPWL_SBButton::DrawThisAppearance(CFX_RenderDevice* pDevice, |
237 CFX_Matrix* pUser2Device) { | 241 CFX_Matrix* pUser2Device) { |
238 if (!IsVisible()) | 242 if (!IsVisible()) |
239 return; | 243 return; |
240 | 244 |
241 CPDF_Rect rectWnd = GetWindowRect(); | 245 CFX_FloatRect rectWnd = GetWindowRect(); |
242 if (rectWnd.IsEmpty()) | 246 if (rectWnd.IsEmpty()) |
243 return; | 247 return; |
244 | 248 |
245 CPDF_Point ptCenter = GetCenterPoint(); | 249 CFX_FloatPoint ptCenter = GetCenterPoint(); |
246 int32_t nTransparancy = GetTransparency(); | 250 int32_t nTransparancy = GetTransparency(); |
247 | 251 |
248 switch (m_eScrollBarType) { | 252 switch (m_eScrollBarType) { |
249 case SBT_HSCROLL: | 253 case SBT_HSCROLL: |
250 CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device); | 254 CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device); |
251 switch (m_eSBButtonType) { | 255 switch (m_eSBButtonType) { |
252 case PSBT_MIN: { | 256 case PSBT_MIN: { |
253 CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y); | 257 CFX_FloatPoint pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
254 CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, | 258 ptCenter.y); |
255 ptCenter.y + PWL_TRIANGLE_HALFLEN); | 259 CFX_FloatPoint pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
256 CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, | 260 ptCenter.y + PWL_TRIANGLE_HALFLEN); |
257 ptCenter.y - PWL_TRIANGLE_HALFLEN); | 261 CFX_FloatPoint pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
| 262 ptCenter.y - PWL_TRIANGLE_HALFLEN); |
258 | 263 |
259 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 264 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
260 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 265 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
261 CFX_PathData path; | 266 CFX_PathData path; |
262 | 267 |
263 path.SetPointCount(4); | 268 path.SetPointCount(4); |
264 path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO); | 269 path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO); |
265 path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO); | 270 path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO); |
266 path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO); | 271 path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO); |
267 path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO); | 272 path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO); |
268 | 273 |
269 pDevice->DrawPath(&path, pUser2Device, NULL, | 274 pDevice->DrawPath(&path, pUser2Device, NULL, |
270 CPWL_Utils::PWLColorToFXColor( | 275 CPWL_Utils::PWLColorToFXColor( |
271 PWL_DEFAULT_BLACKCOLOR, nTransparancy), | 276 PWL_DEFAULT_BLACKCOLOR, nTransparancy), |
272 0, FXFILL_ALTERNATE); | 277 0, FXFILL_ALTERNATE); |
273 } | 278 } |
274 } break; | 279 } break; |
275 case PSBT_MAX: { | 280 case PSBT_MAX: { |
276 CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y); | 281 CFX_FloatPoint pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, |
277 CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, | 282 ptCenter.y); |
278 ptCenter.y + PWL_TRIANGLE_HALFLEN); | 283 CFX_FloatPoint pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
279 CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, | 284 ptCenter.y + PWL_TRIANGLE_HALFLEN); |
280 ptCenter.y - PWL_TRIANGLE_HALFLEN); | 285 CFX_FloatPoint pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, |
| 286 ptCenter.y - PWL_TRIANGLE_HALFLEN); |
281 | 287 |
282 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && | 288 if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 && |
283 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { | 289 rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) { |
284 CFX_PathData path; | 290 CFX_PathData path; |
285 | 291 |
286 path.SetPointCount(4); | 292 path.SetPointCount(4); |
287 path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO); | 293 path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO); |
288 path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO); | 294 path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO); |
289 path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO); | 295 path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO); |
290 path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO); | 296 path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO); |
291 | 297 |
292 pDevice->DrawPath(&path, pUser2Device, NULL, | 298 pDevice->DrawPath(&path, pUser2Device, NULL, |
293 CPWL_Utils::PWLColorToFXColor( | 299 CPWL_Utils::PWLColorToFXColor( |
294 PWL_DEFAULT_BLACKCOLOR, nTransparancy), | 300 PWL_DEFAULT_BLACKCOLOR, nTransparancy), |
295 0, FXFILL_ALTERNATE); | 301 0, FXFILL_ALTERNATE); |
296 } | 302 } |
297 } break; | 303 } break; |
298 default: | 304 default: |
299 break; | 305 break; |
300 } | 306 } |
301 break; | 307 break; |
302 case SBT_VSCROLL: | 308 case SBT_VSCROLL: |
303 switch (m_eSBButtonType) { | 309 switch (m_eSBButtonType) { |
304 case PSBT_MIN: { | 310 case PSBT_MIN: { |
305 // draw border | 311 // draw border |
306 CPDF_Rect rcDraw = rectWnd; | 312 CFX_FloatRect rcDraw = rectWnd; |
307 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 313 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
308 ArgbEncode(nTransparancy, 100, 100, 100), | 314 ArgbEncode(nTransparancy, 100, 100, 100), |
309 0.0f); | 315 0.0f); |
310 | 316 |
311 // draw inner border | 317 // draw inner border |
312 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); | 318 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); |
313 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 319 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
314 ArgbEncode(nTransparancy, 255, 255, 255), | 320 ArgbEncode(nTransparancy, 255, 255, 255), |
315 1.0f); | 321 1.0f); |
316 | 322 |
317 // draw background | 323 // draw background |
318 | 324 |
319 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); | 325 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); |
320 | 326 |
321 if (IsEnabled()) | 327 if (IsEnabled()) |
322 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, | 328 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, |
323 nTransparancy, 80, 220); | 329 nTransparancy, 80, 220); |
324 else | 330 else |
325 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, | 331 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, |
326 ArgbEncode(255, 255, 255, 255)); | 332 ArgbEncode(255, 255, 255, 255)); |
327 | 333 |
328 // draw arrow | 334 // draw arrow |
329 | 335 |
330 if (rectWnd.top - rectWnd.bottom > 6.0f) { | 336 if (rectWnd.top - rectWnd.bottom > 6.0f) { |
331 FX_FLOAT fX = rectWnd.left + 1.5f; | 337 FX_FLOAT fX = rectWnd.left + 1.5f; |
332 FX_FLOAT fY = rectWnd.bottom; | 338 FX_FLOAT fY = rectWnd.bottom; |
333 CPDF_Point pts[7] = {CPDF_Point(fX + 2.5f, fY + 4.0f), | 339 CFX_FloatPoint pts[7] = {CFX_FloatPoint(fX + 2.5f, fY + 4.0f), |
334 CPDF_Point(fX + 2.5f, fY + 3.0f), | 340 CFX_FloatPoint(fX + 2.5f, fY + 3.0f), |
335 CPDF_Point(fX + 4.5f, fY + 5.0f), | 341 CFX_FloatPoint(fX + 4.5f, fY + 5.0f), |
336 CPDF_Point(fX + 6.5f, fY + 3.0f), | 342 CFX_FloatPoint(fX + 6.5f, fY + 3.0f), |
337 CPDF_Point(fX + 6.5f, fY + 4.0f), | 343 CFX_FloatPoint(fX + 6.5f, fY + 4.0f), |
338 CPDF_Point(fX + 4.5f, fY + 6.0f), | 344 CFX_FloatPoint(fX + 4.5f, fY + 6.0f), |
339 CPDF_Point(fX + 2.5f, fY + 4.0f)}; | 345 CFX_FloatPoint(fX + 2.5f, fY + 4.0f)}; |
340 | 346 |
341 if (IsEnabled()) | 347 if (IsEnabled()) |
342 CPWL_Utils::DrawFillArea( | 348 CPWL_Utils::DrawFillArea( |
343 pDevice, pUser2Device, pts, 7, | 349 pDevice, pUser2Device, pts, 7, |
344 ArgbEncode(nTransparancy, 255, 255, 255)); | 350 ArgbEncode(nTransparancy, 255, 255, 255)); |
345 else | 351 else |
346 CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, | 352 CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, |
347 CPWL_Utils::PWLColorToFXColor( | 353 CPWL_Utils::PWLColorToFXColor( |
348 PWL_DEFAULT_HEAVYGRAYCOLOR, 255)); | 354 PWL_DEFAULT_HEAVYGRAYCOLOR, 255)); |
349 } | 355 } |
350 } break; | 356 } break; |
351 case PSBT_MAX: { | 357 case PSBT_MAX: { |
352 // draw border | 358 // draw border |
353 CPDF_Rect rcDraw = rectWnd; | 359 CFX_FloatRect rcDraw = rectWnd; |
354 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 360 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
355 ArgbEncode(nTransparancy, 100, 100, 100), | 361 ArgbEncode(nTransparancy, 100, 100, 100), |
356 0.0f); | 362 0.0f); |
357 | 363 |
358 // draw inner border | 364 // draw inner border |
359 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); | 365 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); |
360 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 366 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
361 ArgbEncode(nTransparancy, 255, 255, 255), | 367 ArgbEncode(nTransparancy, 255, 255, 255), |
362 1.0f); | 368 1.0f); |
363 | 369 |
364 // draw background | 370 // draw background |
365 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); | 371 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); |
366 if (IsEnabled()) | 372 if (IsEnabled()) |
367 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, | 373 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, |
368 nTransparancy, 80, 220); | 374 nTransparancy, 80, 220); |
369 else | 375 else |
370 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, | 376 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, |
371 ArgbEncode(255, 255, 255, 255)); | 377 ArgbEncode(255, 255, 255, 255)); |
372 | 378 |
373 // draw arrow | 379 // draw arrow |
374 | 380 |
375 if (rectWnd.top - rectWnd.bottom > 6.0f) { | 381 if (rectWnd.top - rectWnd.bottom > 6.0f) { |
376 FX_FLOAT fX = rectWnd.left + 1.5f; | 382 FX_FLOAT fX = rectWnd.left + 1.5f; |
377 FX_FLOAT fY = rectWnd.bottom; | 383 FX_FLOAT fY = rectWnd.bottom; |
378 | 384 |
379 CPDF_Point pts[7] = {CPDF_Point(fX + 2.5f, fY + 5.0f), | 385 CFX_FloatPoint pts[7] = {CFX_FloatPoint(fX + 2.5f, fY + 5.0f), |
380 CPDF_Point(fX + 2.5f, fY + 6.0f), | 386 CFX_FloatPoint(fX + 2.5f, fY + 6.0f), |
381 CPDF_Point(fX + 4.5f, fY + 4.0f), | 387 CFX_FloatPoint(fX + 4.5f, fY + 4.0f), |
382 CPDF_Point(fX + 6.5f, fY + 6.0f), | 388 CFX_FloatPoint(fX + 6.5f, fY + 6.0f), |
383 CPDF_Point(fX + 6.5f, fY + 5.0f), | 389 CFX_FloatPoint(fX + 6.5f, fY + 5.0f), |
384 CPDF_Point(fX + 4.5f, fY + 3.0f), | 390 CFX_FloatPoint(fX + 4.5f, fY + 3.0f), |
385 CPDF_Point(fX + 2.5f, fY + 5.0f)}; | 391 CFX_FloatPoint(fX + 2.5f, fY + 5.0f)}; |
386 | 392 |
387 if (IsEnabled()) | 393 if (IsEnabled()) |
388 CPWL_Utils::DrawFillArea( | 394 CPWL_Utils::DrawFillArea( |
389 pDevice, pUser2Device, pts, 7, | 395 pDevice, pUser2Device, pts, 7, |
390 ArgbEncode(nTransparancy, 255, 255, 255)); | 396 ArgbEncode(nTransparancy, 255, 255, 255)); |
391 else | 397 else |
392 CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, | 398 CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, |
393 CPWL_Utils::PWLColorToFXColor( | 399 CPWL_Utils::PWLColorToFXColor( |
394 PWL_DEFAULT_HEAVYGRAYCOLOR, 255)); | 400 PWL_DEFAULT_HEAVYGRAYCOLOR, 255)); |
395 } | 401 } |
396 } break; | 402 } break; |
397 case PSBT_POS: { | 403 case PSBT_POS: { |
398 // draw border | 404 // draw border |
399 CPDF_Rect rcDraw = rectWnd; | 405 CFX_FloatRect rcDraw = rectWnd; |
400 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 406 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
401 ArgbEncode(nTransparancy, 100, 100, 100), | 407 ArgbEncode(nTransparancy, 100, 100, 100), |
402 0.0f); | 408 0.0f); |
403 | 409 |
404 // draw inner border | 410 // draw inner border |
405 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); | 411 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); |
406 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 412 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
407 ArgbEncode(nTransparancy, 255, 255, 255), | 413 ArgbEncode(nTransparancy, 255, 255, 255), |
408 1.0f); | 414 1.0f); |
409 | 415 |
410 if (IsEnabled()) { | 416 if (IsEnabled()) { |
411 // draw shadow effect | 417 // draw shadow effect |
412 | 418 |
413 CPDF_Point ptTop = CPDF_Point(rectWnd.left, rectWnd.top - 1.0f); | 419 CFX_FloatPoint ptTop = |
414 CPDF_Point ptBottom = | 420 CFX_FloatPoint(rectWnd.left, rectWnd.top - 1.0f); |
415 CPDF_Point(rectWnd.left, rectWnd.bottom + 1.0f); | 421 CFX_FloatPoint ptBottom = |
| 422 CFX_FloatPoint(rectWnd.left, rectWnd.bottom + 1.0f); |
416 | 423 |
417 ptTop.x += 1.5f; | 424 ptTop.x += 1.5f; |
418 ptBottom.x += 1.5f; | 425 ptBottom.x += 1.5f; |
419 | 426 |
420 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom, | 427 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom, |
421 ArgbEncode(nTransparancy, 210, 210, 210), | 428 ArgbEncode(nTransparancy, 210, 210, 210), |
422 1.0f); | 429 1.0f); |
423 | 430 |
424 ptTop.x += 1.0f; | 431 ptTop.x += 1.0f; |
425 ptBottom.x += 1.0f; | 432 ptBottom.x += 1.0f; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 | 499 |
493 if (rectWnd.Height() > 8.0f) { | 500 if (rectWnd.Height() > 8.0f) { |
494 FX_COLORREF crStroke = ArgbEncode(nTransparancy, 120, 120, 120); | 501 FX_COLORREF crStroke = ArgbEncode(nTransparancy, 120, 120, 120); |
495 if (!IsEnabled()) | 502 if (!IsEnabled()) |
496 crStroke = CPWL_Utils::PWLColorToFXColor( | 503 crStroke = CPWL_Utils::PWLColorToFXColor( |
497 PWL_DEFAULT_HEAVYGRAYCOLOR, 255); | 504 PWL_DEFAULT_HEAVYGRAYCOLOR, 255); |
498 | 505 |
499 FX_FLOAT nFrictionWidth = 5.0f; | 506 FX_FLOAT nFrictionWidth = 5.0f; |
500 FX_FLOAT nFrictionHeight = 5.5f; | 507 FX_FLOAT nFrictionHeight = 5.5f; |
501 | 508 |
502 CPDF_Point ptLeft = | 509 CFX_FloatPoint ptLeft = |
503 CPDF_Point(ptCenter.x - nFrictionWidth / 2.0f, | 510 CFX_FloatPoint(ptCenter.x - nFrictionWidth / 2.0f, |
504 ptCenter.y - nFrictionHeight / 2.0f + 0.5f); | 511 ptCenter.y - nFrictionHeight / 2.0f + 0.5f); |
505 CPDF_Point ptRight = | 512 CFX_FloatPoint ptRight = |
506 CPDF_Point(ptCenter.x + nFrictionWidth / 2.0f, | 513 CFX_FloatPoint(ptCenter.x + nFrictionWidth / 2.0f, |
507 ptCenter.y - nFrictionHeight / 2.0f + 0.5f); | 514 ptCenter.y - nFrictionHeight / 2.0f + 0.5f); |
508 | 515 |
509 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, | 516 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, |
510 crStroke, 1.0f); | 517 crStroke, 1.0f); |
511 | 518 |
512 ptLeft.y += 2.0f; | 519 ptLeft.y += 2.0f; |
513 ptRight.y += 2.0f; | 520 ptRight.y += 2.0f; |
514 | 521 |
515 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, | 522 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, |
516 crStroke, 1.0f); | 523 crStroke, 1.0f); |
517 | 524 |
518 ptLeft.y += 2.0f; | 525 ptLeft.y += 2.0f; |
519 ptRight.y += 2.0f; | 526 ptRight.y += 2.0f; |
520 | 527 |
521 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, | 528 CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight, |
522 crStroke, 1.0f); | 529 crStroke, 1.0f); |
523 } | 530 } |
524 } break; | 531 } break; |
525 default: | 532 default: |
526 break; | 533 break; |
527 } | 534 } |
528 break; | 535 break; |
529 default: | 536 default: |
530 break; | 537 break; |
531 } | 538 } |
532 } | 539 } |
533 | 540 |
534 FX_BOOL CPWL_SBButton::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) { | 541 FX_BOOL CPWL_SBButton::OnLButtonDown(const CFX_FloatPoint& point, |
| 542 FX_DWORD nFlag) { |
535 CPWL_Wnd::OnLButtonDown(point, nFlag); | 543 CPWL_Wnd::OnLButtonDown(point, nFlag); |
536 | 544 |
537 if (CPWL_Wnd* pParent = GetParentWindow()) | 545 if (CPWL_Wnd* pParent = GetParentWindow()) |
538 pParent->OnNotify(this, PNM_LBUTTONDOWN, 0, (intptr_t)&point); | 546 pParent->OnNotify(this, PNM_LBUTTONDOWN, 0, (intptr_t)&point); |
539 | 547 |
540 m_bMouseDown = TRUE; | 548 m_bMouseDown = TRUE; |
541 SetCapture(); | 549 SetCapture(); |
542 | 550 |
543 return TRUE; | 551 return TRUE; |
544 } | 552 } |
545 | 553 |
546 FX_BOOL CPWL_SBButton::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) { | 554 FX_BOOL CPWL_SBButton::OnLButtonUp(const CFX_FloatPoint& point, |
| 555 FX_DWORD nFlag) { |
547 CPWL_Wnd::OnLButtonUp(point, nFlag); | 556 CPWL_Wnd::OnLButtonUp(point, nFlag); |
548 | 557 |
549 if (CPWL_Wnd* pParent = GetParentWindow()) | 558 if (CPWL_Wnd* pParent = GetParentWindow()) |
550 pParent->OnNotify(this, PNM_LBUTTONUP, 0, (intptr_t)&point); | 559 pParent->OnNotify(this, PNM_LBUTTONUP, 0, (intptr_t)&point); |
551 | 560 |
552 m_bMouseDown = FALSE; | 561 m_bMouseDown = FALSE; |
553 ReleaseCapture(); | 562 ReleaseCapture(); |
554 | 563 |
555 return TRUE; | 564 return TRUE; |
556 } | 565 } |
557 | 566 |
558 FX_BOOL CPWL_SBButton::OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag) { | 567 FX_BOOL CPWL_SBButton::OnMouseMove(const CFX_FloatPoint& point, |
| 568 FX_DWORD nFlag) { |
559 CPWL_Wnd::OnMouseMove(point, nFlag); | 569 CPWL_Wnd::OnMouseMove(point, nFlag); |
560 | 570 |
561 if (CPWL_Wnd* pParent = GetParentWindow()) { | 571 if (CPWL_Wnd* pParent = GetParentWindow()) { |
562 pParent->OnNotify(this, PNM_MOUSEMOVE, 0, (intptr_t)&point); | 572 pParent->OnNotify(this, PNM_MOUSEMOVE, 0, (intptr_t)&point); |
563 } | 573 } |
564 | 574 |
565 return TRUE; | 575 return TRUE; |
566 } | 576 } |
567 | 577 |
568 CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType) | 578 CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType) |
569 : m_sbType(sbType), | 579 : m_sbType(sbType), |
570 m_pMinButton(NULL), | 580 m_pMinButton(NULL), |
571 m_pMaxButton(NULL), | 581 m_pMaxButton(NULL), |
572 m_pPosButton(NULL), | 582 m_pPosButton(NULL), |
573 m_bMouseDown(FALSE), | 583 m_bMouseDown(FALSE), |
574 m_bMinOrMax(FALSE), | 584 m_bMinOrMax(FALSE), |
575 m_bNotifyForever(TRUE) {} | 585 m_bNotifyForever(TRUE) {} |
576 | 586 |
577 CPWL_ScrollBar::~CPWL_ScrollBar() {} | 587 CPWL_ScrollBar::~CPWL_ScrollBar() {} |
578 | 588 |
579 CFX_ByteString CPWL_ScrollBar::GetClassName() const { | 589 CFX_ByteString CPWL_ScrollBar::GetClassName() const { |
580 return "CPWL_ScrollBar"; | 590 return "CPWL_ScrollBar"; |
581 } | 591 } |
582 | 592 |
583 void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) { | 593 void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) { |
584 cp.eCursorType = FXCT_ARROW; | 594 cp.eCursorType = FXCT_ARROW; |
585 } | 595 } |
586 | 596 |
587 void CPWL_ScrollBar::RePosChildWnd() { | 597 void CPWL_ScrollBar::RePosChildWnd() { |
588 CPDF_Rect rcClient = GetClientRect(); | 598 CFX_FloatRect rcClient = GetClientRect(); |
589 CPDF_Rect rcMinButton, rcMaxButton; | 599 CFX_FloatRect rcMinButton, rcMaxButton; |
590 FX_FLOAT fBWidth = 0; | 600 FX_FLOAT fBWidth = 0; |
591 | 601 |
592 switch (m_sbType) { | 602 switch (m_sbType) { |
593 case SBT_HSCROLL: | 603 case SBT_HSCROLL: |
594 if (rcClient.right - rcClient.left > | 604 if (rcClient.right - rcClient.left > |
595 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + PWL_SCROLLBAR_POSBUTTON_MINWIDTH + | 605 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + PWL_SCROLLBAR_POSBUTTON_MINWIDTH + |
596 2) { | 606 2) { |
597 rcMinButton = | 607 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.bottom, |
598 CPDF_Rect(rcClient.left, rcClient.bottom, | 608 rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH, |
599 rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH, rcClient.top); | 609 rcClient.top); |
600 rcMaxButton = CPDF_Rect(rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH, | 610 rcMaxButton = |
601 rcClient.bottom, rcClient.right, rcClient.top); | 611 CFX_FloatRect(rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH, |
| 612 rcClient.bottom, rcClient.right, rcClient.top); |
602 } else { | 613 } else { |
603 fBWidth = (rcClient.right - rcClient.left - | 614 fBWidth = (rcClient.right - rcClient.left - |
604 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / | 615 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / |
605 2; | 616 2; |
606 | 617 |
607 if (fBWidth > 0) { | 618 if (fBWidth > 0) { |
608 rcMinButton = CPDF_Rect(rcClient.left, rcClient.bottom, | 619 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.bottom, |
609 rcClient.left + fBWidth, rcClient.top); | 620 rcClient.left + fBWidth, rcClient.top); |
610 rcMaxButton = CPDF_Rect(rcClient.right - fBWidth, rcClient.bottom, | 621 rcMaxButton = CFX_FloatRect(rcClient.right - fBWidth, rcClient.bottom, |
611 rcClient.right, rcClient.top); | 622 rcClient.right, rcClient.top); |
612 } else { | 623 } else { |
613 SetVisible(FALSE); | 624 SetVisible(FALSE); |
614 } | 625 } |
615 } | 626 } |
616 break; | 627 break; |
617 case SBT_VSCROLL: | 628 case SBT_VSCROLL: |
618 if (IsFloatBigger(rcClient.top - rcClient.bottom, | 629 if (IsFloatBigger(rcClient.top - rcClient.bottom, |
619 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + | 630 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + |
620 PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)) { | 631 PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)) { |
621 rcMinButton = | 632 rcMinButton = CFX_FloatRect(rcClient.left, |
622 CPDF_Rect(rcClient.left, rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH, | 633 rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH, |
623 rcClient.right, rcClient.top); | 634 rcClient.right, rcClient.top); |
624 rcMaxButton = CPDF_Rect(rcClient.left, rcClient.bottom, rcClient.right, | 635 rcMaxButton = |
625 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH); | 636 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, |
| 637 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH); |
626 } else { | 638 } else { |
627 fBWidth = (rcClient.top - rcClient.bottom - | 639 fBWidth = (rcClient.top - rcClient.bottom - |
628 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / | 640 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / |
629 2; | 641 2; |
630 | 642 |
631 if (IsFloatBigger(fBWidth, 0)) { | 643 if (IsFloatBigger(fBWidth, 0)) { |
632 rcMinButton = CPDF_Rect(rcClient.left, rcClient.top - fBWidth, | 644 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.top - fBWidth, |
633 rcClient.right, rcClient.top); | 645 rcClient.right, rcClient.top); |
634 rcMaxButton = CPDF_Rect(rcClient.left, rcClient.bottom, | 646 rcMaxButton = |
635 rcClient.right, rcClient.bottom + fBWidth); | 647 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, |
| 648 rcClient.bottom + fBWidth); |
636 } else { | 649 } else { |
637 SetVisible(FALSE); | 650 SetVisible(FALSE); |
638 } | 651 } |
639 } | 652 } |
640 break; | 653 break; |
641 } | 654 } |
642 | 655 |
643 if (m_pMinButton) | 656 if (m_pMinButton) |
644 m_pMinButton->Move(rcMinButton, TRUE, FALSE); | 657 m_pMinButton->Move(rcMinButton, TRUE, FALSE); |
645 if (m_pMaxButton) | 658 if (m_pMaxButton) |
646 m_pMaxButton->Move(rcMaxButton, TRUE, FALSE); | 659 m_pMaxButton->Move(rcMaxButton, TRUE, FALSE); |
647 MovePosButton(FALSE); | 660 MovePosButton(FALSE); |
648 } | 661 } |
649 | 662 |
650 void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { | 663 void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { |
651 CPDF_Rect rectWnd = GetWindowRect(); | 664 CFX_FloatRect rectWnd = GetWindowRect(); |
652 | 665 |
653 if (IsVisible() && !rectWnd.IsEmpty()) { | 666 if (IsVisible() && !rectWnd.IsEmpty()) { |
654 CFX_ByteTextBuf sButton; | 667 CFX_ByteTextBuf sButton; |
655 | 668 |
656 sButton << "q\n"; | 669 sButton << "q\n"; |
657 sButton << "0 w\n" | 670 sButton << "0 w\n" |
658 << CPWL_Utils::GetColorAppStream(GetBackgroundColor(), TRUE); | 671 << CPWL_Utils::GetColorAppStream(GetBackgroundColor(), TRUE); |
659 sButton << rectWnd.left << " " << rectWnd.bottom << " " | 672 sButton << rectWnd.left << " " << rectWnd.bottom << " " |
660 << rectWnd.right - rectWnd.left << " " | 673 << rectWnd.right - rectWnd.left << " " |
661 << rectWnd.top - rectWnd.bottom << " re b Q\n"; | 674 << rectWnd.top - rectWnd.bottom << " re b Q\n"; |
662 | 675 |
663 sAppStream << sButton; | 676 sAppStream << sButton; |
664 } | 677 } |
665 } | 678 } |
666 | 679 |
667 void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice, | 680 void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice, |
668 CFX_Matrix* pUser2Device) { | 681 CFX_Matrix* pUser2Device) { |
669 CPDF_Rect rectWnd = GetWindowRect(); | 682 CFX_FloatRect rectWnd = GetWindowRect(); |
670 | 683 |
671 if (IsVisible() && !rectWnd.IsEmpty()) { | 684 if (IsVisible() && !rectWnd.IsEmpty()) { |
672 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rectWnd, | 685 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rectWnd, |
673 GetBackgroundColor(), GetTransparency()); | 686 GetBackgroundColor(), GetTransparency()); |
674 | 687 |
675 CPWL_Utils::DrawStrokeLine( | 688 CPWL_Utils::DrawStrokeLine( |
676 pDevice, pUser2Device, | 689 pDevice, pUser2Device, |
677 CPDF_Point(rectWnd.left + 2.0f, rectWnd.top - 2.0f), | 690 CFX_FloatPoint(rectWnd.left + 2.0f, rectWnd.top - 2.0f), |
678 CPDF_Point(rectWnd.left + 2.0f, rectWnd.bottom + 2.0f), | 691 CFX_FloatPoint(rectWnd.left + 2.0f, rectWnd.bottom + 2.0f), |
679 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); | 692 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); |
680 | 693 |
681 CPWL_Utils::DrawStrokeLine( | 694 CPWL_Utils::DrawStrokeLine( |
682 pDevice, pUser2Device, | 695 pDevice, pUser2Device, |
683 CPDF_Point(rectWnd.right - 2.0f, rectWnd.top - 2.0f), | 696 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.top - 2.0f), |
684 CPDF_Point(rectWnd.right - 2.0f, rectWnd.bottom + 2.0f), | 697 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.bottom + 2.0f), |
685 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); | 698 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); |
686 } | 699 } |
687 } | 700 } |
688 | 701 |
689 FX_BOOL CPWL_ScrollBar::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) { | 702 FX_BOOL CPWL_ScrollBar::OnLButtonDown(const CFX_FloatPoint& point, |
| 703 FX_DWORD nFlag) { |
690 CPWL_Wnd::OnLButtonDown(point, nFlag); | 704 CPWL_Wnd::OnLButtonDown(point, nFlag); |
691 | 705 |
692 if (HasFlag(PWS_AUTOTRANSPARENT)) { | 706 if (HasFlag(PWS_AUTOTRANSPARENT)) { |
693 if (GetTransparency() != 255) { | 707 if (GetTransparency() != 255) { |
694 SetTransparency(255); | 708 SetTransparency(255); |
695 InvalidateRect(); | 709 InvalidateRect(); |
696 } | 710 } |
697 } | 711 } |
698 | 712 |
699 CPDF_Rect rcMinArea, rcMaxArea; | 713 CFX_FloatRect rcMinArea, rcMaxArea; |
700 | 714 |
701 if (m_pPosButton && m_pPosButton->IsVisible()) { | 715 if (m_pPosButton && m_pPosButton->IsVisible()) { |
702 CPDF_Rect rcClient = GetClientRect(); | 716 CFX_FloatRect rcClient = GetClientRect(); |
703 CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect(); | 717 CFX_FloatRect rcPosButton = m_pPosButton->GetWindowRect(); |
704 | 718 |
705 switch (m_sbType) { | 719 switch (m_sbType) { |
706 case SBT_HSCROLL: | 720 case SBT_HSCROLL: |
707 rcMinArea = CPDF_Rect(rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH, | 721 rcMinArea = |
708 rcClient.bottom, rcPosButton.left, rcClient.top); | 722 CFX_FloatRect(rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH, |
709 rcMaxArea = CPDF_Rect(rcPosButton.right, rcClient.bottom, | 723 rcClient.bottom, rcPosButton.left, rcClient.top); |
710 rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH, | 724 rcMaxArea = CFX_FloatRect(rcPosButton.right, rcClient.bottom, |
711 rcClient.top); | 725 rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH, |
| 726 rcClient.top); |
712 | 727 |
713 break; | 728 break; |
714 case SBT_VSCROLL: | 729 case SBT_VSCROLL: |
715 rcMinArea = CPDF_Rect(rcClient.left, rcPosButton.top, rcClient.right, | 730 rcMinArea = |
716 rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH); | 731 CFX_FloatRect(rcClient.left, rcPosButton.top, rcClient.right, |
717 rcMaxArea = CPDF_Rect(rcClient.left, | 732 rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH); |
718 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH, | 733 rcMaxArea = CFX_FloatRect(rcClient.left, |
719 rcClient.right, rcPosButton.bottom); | 734 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH, |
| 735 rcClient.right, rcPosButton.bottom); |
720 break; | 736 break; |
721 } | 737 } |
722 | 738 |
723 rcMinArea.Normalize(); | 739 rcMinArea.Normalize(); |
724 rcMaxArea.Normalize(); | 740 rcMaxArea.Normalize(); |
725 | 741 |
726 if (rcMinArea.Contains(point.x, point.y)) { | 742 if (rcMinArea.Contains(point.x, point.y)) { |
727 m_sData.SubBig(); | 743 m_sData.SubBig(); |
728 MovePosButton(TRUE); | 744 MovePosButton(TRUE); |
729 NotifyScrollWindow(); | 745 NotifyScrollWindow(); |
730 } | 746 } |
731 | 747 |
732 if (rcMaxArea.Contains(point.x, point.y)) { | 748 if (rcMaxArea.Contains(point.x, point.y)) { |
733 m_sData.AddBig(); | 749 m_sData.AddBig(); |
734 MovePosButton(TRUE); | 750 MovePosButton(TRUE); |
735 NotifyScrollWindow(); | 751 NotifyScrollWindow(); |
736 } | 752 } |
737 } | 753 } |
738 | 754 |
739 return TRUE; | 755 return TRUE; |
740 } | 756 } |
741 | 757 |
742 FX_BOOL CPWL_ScrollBar::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) { | 758 FX_BOOL CPWL_ScrollBar::OnLButtonUp(const CFX_FloatPoint& point, |
| 759 FX_DWORD nFlag) { |
743 CPWL_Wnd::OnLButtonUp(point, nFlag); | 760 CPWL_Wnd::OnLButtonUp(point, nFlag); |
744 | 761 |
745 if (HasFlag(PWS_AUTOTRANSPARENT)) { | 762 if (HasFlag(PWS_AUTOTRANSPARENT)) { |
746 if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY) { | 763 if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY) { |
747 SetTransparency(PWL_SCROLLBAR_TRANSPARANCY); | 764 SetTransparency(PWL_SCROLLBAR_TRANSPARANCY); |
748 InvalidateRect(); | 765 InvalidateRect(); |
749 } | 766 } |
750 } | 767 } |
751 | 768 |
752 EndTimer(); | 769 EndTimer(); |
753 m_bMouseDown = FALSE; | 770 m_bMouseDown = FALSE; |
754 | 771 |
755 return TRUE; | 772 return TRUE; |
756 } | 773 } |
757 | 774 |
758 void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd, | 775 void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd, |
759 FX_DWORD msg, | 776 FX_DWORD msg, |
760 intptr_t wParam, | 777 intptr_t wParam, |
761 intptr_t lParam) { | 778 intptr_t lParam) { |
762 CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam); | 779 CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam); |
763 | 780 |
764 switch (msg) { | 781 switch (msg) { |
765 case PNM_LBUTTONDOWN: | 782 case PNM_LBUTTONDOWN: |
766 if (pWnd == m_pMinButton) { | 783 if (pWnd == m_pMinButton) { |
767 OnMinButtonLBDown(*(CPDF_Point*)lParam); | 784 OnMinButtonLBDown(*(CFX_FloatPoint*)lParam); |
768 } | 785 } |
769 | 786 |
770 if (pWnd == m_pMaxButton) { | 787 if (pWnd == m_pMaxButton) { |
771 OnMaxButtonLBDown(*(CPDF_Point*)lParam); | 788 OnMaxButtonLBDown(*(CFX_FloatPoint*)lParam); |
772 } | 789 } |
773 | 790 |
774 if (pWnd == m_pPosButton) { | 791 if (pWnd == m_pPosButton) { |
775 OnPosButtonLBDown(*(CPDF_Point*)lParam); | 792 OnPosButtonLBDown(*(CFX_FloatPoint*)lParam); |
776 } | 793 } |
777 break; | 794 break; |
778 case PNM_LBUTTONUP: | 795 case PNM_LBUTTONUP: |
779 if (pWnd == m_pMinButton) { | 796 if (pWnd == m_pMinButton) { |
780 OnMinButtonLBUp(*(CPDF_Point*)lParam); | 797 OnMinButtonLBUp(*(CFX_FloatPoint*)lParam); |
781 } | 798 } |
782 | 799 |
783 if (pWnd == m_pMaxButton) { | 800 if (pWnd == m_pMaxButton) { |
784 OnMaxButtonLBUp(*(CPDF_Point*)lParam); | 801 OnMaxButtonLBUp(*(CFX_FloatPoint*)lParam); |
785 } | 802 } |
786 | 803 |
787 if (pWnd == m_pPosButton) { | 804 if (pWnd == m_pPosButton) { |
788 OnPosButtonLBUp(*(CPDF_Point*)lParam); | 805 OnPosButtonLBUp(*(CFX_FloatPoint*)lParam); |
789 } | 806 } |
790 break; | 807 break; |
791 case PNM_MOUSEMOVE: | 808 case PNM_MOUSEMOVE: |
792 if (pWnd == m_pMinButton) { | 809 if (pWnd == m_pMinButton) { |
793 OnMinButtonMouseMove(*(CPDF_Point*)lParam); | 810 OnMinButtonMouseMove(*(CFX_FloatPoint*)lParam); |
794 } | 811 } |
795 | 812 |
796 if (pWnd == m_pMaxButton) { | 813 if (pWnd == m_pMaxButton) { |
797 OnMaxButtonMouseMove(*(CPDF_Point*)lParam); | 814 OnMaxButtonMouseMove(*(CFX_FloatPoint*)lParam); |
798 } | 815 } |
799 | 816 |
800 if (pWnd == m_pPosButton) { | 817 if (pWnd == m_pPosButton) { |
801 OnPosButtonMouseMove(*(CPDF_Point*)lParam); | 818 OnPosButtonMouseMove(*(CFX_FloatPoint*)lParam); |
802 } | 819 } |
803 break; | 820 break; |
804 case PNM_SETSCROLLINFO: { | 821 case PNM_SETSCROLLINFO: { |
805 if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam) { | 822 if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam) { |
806 if (FXSYS_memcmp(&m_OriginInfo, pInfo, sizeof(PWL_SCROLL_INFO)) != 0) { | 823 if (FXSYS_memcmp(&m_OriginInfo, pInfo, sizeof(PWL_SCROLL_INFO)) != 0) { |
807 m_OriginInfo = *pInfo; | 824 m_OriginInfo = *pInfo; |
808 FX_FLOAT fMax = | 825 FX_FLOAT fMax = |
809 pInfo->fContentMax - pInfo->fContentMin - pInfo->fPlateWidth; | 826 pInfo->fContentMax - pInfo->fContentMin - pInfo->fPlateWidth; |
810 fMax = fMax > 0.0f ? fMax : 0.0f; | 827 fMax = fMax > 0.0f ? fMax : 0.0f; |
811 SetScrollRange(0, fMax, pInfo->fPlateWidth); | 828 SetScrollRange(0, fMax, pInfo->fPlateWidth); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep) { | 906 void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep) { |
890 m_sData.SetBigStep(fBigStep); | 907 m_sData.SetBigStep(fBigStep); |
891 m_sData.SetSmallStep(fSmallStep); | 908 m_sData.SetSmallStep(fSmallStep); |
892 } | 909 } |
893 | 910 |
894 void CPWL_ScrollBar::MovePosButton(FX_BOOL bRefresh) { | 911 void CPWL_ScrollBar::MovePosButton(FX_BOOL bRefresh) { |
895 ASSERT(m_pMinButton); | 912 ASSERT(m_pMinButton); |
896 ASSERT(m_pMaxButton); | 913 ASSERT(m_pMaxButton); |
897 | 914 |
898 if (m_pPosButton->IsVisible()) { | 915 if (m_pPosButton->IsVisible()) { |
899 CPDF_Rect rcClient; | 916 CFX_FloatRect rcClient; |
900 CPDF_Rect rcPosArea, rcPosButton; | 917 CFX_FloatRect rcPosArea, rcPosButton; |
901 | 918 |
902 rcClient = GetClientRect(); | 919 rcClient = GetClientRect(); |
903 rcPosArea = GetScrollArea(); | 920 rcPosArea = GetScrollArea(); |
904 | 921 |
905 FX_FLOAT fLeft, fRight, fTop, fBottom; | 922 FX_FLOAT fLeft, fRight, fTop, fBottom; |
906 | 923 |
907 switch (m_sbType) { | 924 switch (m_sbType) { |
908 case SBT_HSCROLL: | 925 case SBT_HSCROLL: |
909 fLeft = TrueToFace(m_sData.fScrollPos); | 926 fLeft = TrueToFace(m_sData.fScrollPos); |
910 fRight = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth); | 927 fRight = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth); |
911 | 928 |
912 if (fRight - fLeft < PWL_SCROLLBAR_POSBUTTON_MINWIDTH) | 929 if (fRight - fLeft < PWL_SCROLLBAR_POSBUTTON_MINWIDTH) |
913 fRight = fLeft + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; | 930 fRight = fLeft + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; |
914 | 931 |
915 if (fRight > rcPosArea.right) { | 932 if (fRight > rcPosArea.right) { |
916 fRight = rcPosArea.right; | 933 fRight = rcPosArea.right; |
917 fLeft = fRight - PWL_SCROLLBAR_POSBUTTON_MINWIDTH; | 934 fLeft = fRight - PWL_SCROLLBAR_POSBUTTON_MINWIDTH; |
918 } | 935 } |
919 | 936 |
920 rcPosButton = CPDF_Rect(fLeft, rcPosArea.bottom, fRight, rcPosArea.top); | 937 rcPosButton = |
| 938 CFX_FloatRect(fLeft, rcPosArea.bottom, fRight, rcPosArea.top); |
921 | 939 |
922 break; | 940 break; |
923 case SBT_VSCROLL: | 941 case SBT_VSCROLL: |
924 fBottom = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth); | 942 fBottom = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth); |
925 fTop = TrueToFace(m_sData.fScrollPos); | 943 fTop = TrueToFace(m_sData.fScrollPos); |
926 | 944 |
927 if (IsFloatSmaller(fTop - fBottom, PWL_SCROLLBAR_POSBUTTON_MINWIDTH)) | 945 if (IsFloatSmaller(fTop - fBottom, PWL_SCROLLBAR_POSBUTTON_MINWIDTH)) |
928 fBottom = fTop - PWL_SCROLLBAR_POSBUTTON_MINWIDTH; | 946 fBottom = fTop - PWL_SCROLLBAR_POSBUTTON_MINWIDTH; |
929 | 947 |
930 if (IsFloatSmaller(fBottom, rcPosArea.bottom)) { | 948 if (IsFloatSmaller(fBottom, rcPosArea.bottom)) { |
931 fBottom = rcPosArea.bottom; | 949 fBottom = rcPosArea.bottom; |
932 fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; | 950 fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; |
933 } | 951 } |
934 | 952 |
935 rcPosButton = CPDF_Rect(rcPosArea.left, fBottom, rcPosArea.right, fTop); | 953 rcPosButton = |
| 954 CFX_FloatRect(rcPosArea.left, fBottom, rcPosArea.right, fTop); |
936 | 955 |
937 break; | 956 break; |
938 } | 957 } |
939 | 958 |
940 m_pPosButton->Move(rcPosButton, TRUE, bRefresh); | 959 m_pPosButton->Move(rcPosButton, TRUE, bRefresh); |
941 } | 960 } |
942 } | 961 } |
943 | 962 |
944 void CPWL_ScrollBar::OnMinButtonLBDown(const CPDF_Point& point) { | 963 void CPWL_ScrollBar::OnMinButtonLBDown(const CFX_FloatPoint& point) { |
945 m_sData.SubSmall(); | 964 m_sData.SubSmall(); |
946 MovePosButton(TRUE); | 965 MovePosButton(TRUE); |
947 NotifyScrollWindow(); | 966 NotifyScrollWindow(); |
948 | 967 |
949 m_bMinOrMax = TRUE; | 968 m_bMinOrMax = TRUE; |
950 | 969 |
951 EndTimer(); | 970 EndTimer(); |
952 BeginTimer(100); | 971 BeginTimer(100); |
953 } | 972 } |
954 | 973 |
955 void CPWL_ScrollBar::OnMinButtonLBUp(const CPDF_Point& point) {} | 974 void CPWL_ScrollBar::OnMinButtonLBUp(const CFX_FloatPoint& point) {} |
956 | 975 |
957 void CPWL_ScrollBar::OnMinButtonMouseMove(const CPDF_Point& point) {} | 976 void CPWL_ScrollBar::OnMinButtonMouseMove(const CFX_FloatPoint& point) {} |
958 | 977 |
959 void CPWL_ScrollBar::OnMaxButtonLBDown(const CPDF_Point& point) { | 978 void CPWL_ScrollBar::OnMaxButtonLBDown(const CFX_FloatPoint& point) { |
960 m_sData.AddSmall(); | 979 m_sData.AddSmall(); |
961 MovePosButton(TRUE); | 980 MovePosButton(TRUE); |
962 NotifyScrollWindow(); | 981 NotifyScrollWindow(); |
963 | 982 |
964 m_bMinOrMax = FALSE; | 983 m_bMinOrMax = FALSE; |
965 | 984 |
966 EndTimer(); | 985 EndTimer(); |
967 BeginTimer(100); | 986 BeginTimer(100); |
968 } | 987 } |
969 | 988 |
970 void CPWL_ScrollBar::OnMaxButtonLBUp(const CPDF_Point& point) {} | 989 void CPWL_ScrollBar::OnMaxButtonLBUp(const CFX_FloatPoint& point) {} |
971 | 990 |
972 void CPWL_ScrollBar::OnMaxButtonMouseMove(const CPDF_Point& point) {} | 991 void CPWL_ScrollBar::OnMaxButtonMouseMove(const CFX_FloatPoint& point) {} |
973 | 992 |
974 void CPWL_ScrollBar::OnPosButtonLBDown(const CPDF_Point& point) { | 993 void CPWL_ScrollBar::OnPosButtonLBDown(const CFX_FloatPoint& point) { |
975 m_bMouseDown = TRUE; | 994 m_bMouseDown = TRUE; |
976 | 995 |
977 if (m_pPosButton) { | 996 if (m_pPosButton) { |
978 CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect(); | 997 CFX_FloatRect rcPosButton = m_pPosButton->GetWindowRect(); |
979 | 998 |
980 switch (m_sbType) { | 999 switch (m_sbType) { |
981 case SBT_HSCROLL: | 1000 case SBT_HSCROLL: |
982 m_nOldPos = point.x; | 1001 m_nOldPos = point.x; |
983 m_fOldPosButton = rcPosButton.left; | 1002 m_fOldPosButton = rcPosButton.left; |
984 break; | 1003 break; |
985 case SBT_VSCROLL: | 1004 case SBT_VSCROLL: |
986 m_nOldPos = point.y; | 1005 m_nOldPos = point.y; |
987 m_fOldPosButton = rcPosButton.top; | 1006 m_fOldPosButton = rcPosButton.top; |
988 break; | 1007 break; |
989 } | 1008 } |
990 } | 1009 } |
991 } | 1010 } |
992 | 1011 |
993 void CPWL_ScrollBar::OnPosButtonLBUp(const CPDF_Point& point) { | 1012 void CPWL_ScrollBar::OnPosButtonLBUp(const CFX_FloatPoint& point) { |
994 if (m_bMouseDown) { | 1013 if (m_bMouseDown) { |
995 if (!m_bNotifyForever) | 1014 if (!m_bNotifyForever) |
996 NotifyScrollWindow(); | 1015 NotifyScrollWindow(); |
997 } | 1016 } |
998 m_bMouseDown = FALSE; | 1017 m_bMouseDown = FALSE; |
999 } | 1018 } |
1000 | 1019 |
1001 void CPWL_ScrollBar::OnPosButtonMouseMove(const CPDF_Point& point) { | 1020 void CPWL_ScrollBar::OnPosButtonMouseMove(const CFX_FloatPoint& point) { |
1002 FX_FLOAT fOldScrollPos = m_sData.fScrollPos; | 1021 FX_FLOAT fOldScrollPos = m_sData.fScrollPos; |
1003 | 1022 |
1004 FX_FLOAT fNewPos = 0; | 1023 FX_FLOAT fNewPos = 0; |
1005 | 1024 |
1006 switch (m_sbType) { | 1025 switch (m_sbType) { |
1007 case SBT_HSCROLL: | 1026 case SBT_HSCROLL: |
1008 if (FXSYS_fabs(point.x - m_nOldPos) < 1) | 1027 if (FXSYS_fabs(point.x - m_nOldPos) < 1) |
1009 return; | 1028 return; |
1010 fNewPos = FaceToTrue(m_fOldPosButton + point.x - m_nOldPos); | 1029 fNewPos = FaceToTrue(m_fOldPosButton + point.x - m_nOldPos); |
1011 break; | 1030 break; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 break; | 1083 break; |
1065 case SBT_VSCROLL: | 1084 case SBT_VSCROLL: |
1066 fPos = m_OriginInfo.fContentMax - m_sData.fScrollPos; | 1085 fPos = m_OriginInfo.fContentMax - m_sData.fScrollPos; |
1067 break; | 1086 break; |
1068 } | 1087 } |
1069 pParent->OnNotify(this, PNM_SCROLLWINDOW, (intptr_t)m_sbType, | 1088 pParent->OnNotify(this, PNM_SCROLLWINDOW, (intptr_t)m_sbType, |
1070 (intptr_t)&fPos); | 1089 (intptr_t)&fPos); |
1071 } | 1090 } |
1072 } | 1091 } |
1073 | 1092 |
1074 CPDF_Rect CPWL_ScrollBar::GetScrollArea() const { | 1093 CFX_FloatRect CPWL_ScrollBar::GetScrollArea() const { |
1075 CPDF_Rect rcClient = GetClientRect(); | 1094 CFX_FloatRect rcClient = GetClientRect(); |
1076 CPDF_Rect rcArea; | 1095 CFX_FloatRect rcArea; |
1077 | 1096 |
1078 if (!m_pMinButton || !m_pMaxButton) | 1097 if (!m_pMinButton || !m_pMaxButton) |
1079 return rcClient; | 1098 return rcClient; |
1080 | 1099 |
1081 CPDF_Rect rcMin = m_pMinButton->GetWindowRect(); | 1100 CFX_FloatRect rcMin = m_pMinButton->GetWindowRect(); |
1082 CPDF_Rect rcMax = m_pMaxButton->GetWindowRect(); | 1101 CFX_FloatRect rcMax = m_pMaxButton->GetWindowRect(); |
1083 | 1102 |
1084 FX_FLOAT fMinWidth = rcMin.right - rcMin.left; | 1103 FX_FLOAT fMinWidth = rcMin.right - rcMin.left; |
1085 FX_FLOAT fMinHeight = rcMin.top - rcMin.bottom; | 1104 FX_FLOAT fMinHeight = rcMin.top - rcMin.bottom; |
1086 FX_FLOAT fMaxWidth = rcMax.right - rcMax.left; | 1105 FX_FLOAT fMaxWidth = rcMax.right - rcMax.left; |
1087 FX_FLOAT fMaxHeight = rcMax.top - rcMax.bottom; | 1106 FX_FLOAT fMaxHeight = rcMax.top - rcMax.bottom; |
1088 | 1107 |
1089 switch (m_sbType) { | 1108 switch (m_sbType) { |
1090 case SBT_HSCROLL: | 1109 case SBT_HSCROLL: |
1091 if (rcClient.right - rcClient.left > fMinWidth + fMaxWidth + 2) { | 1110 if (rcClient.right - rcClient.left > fMinWidth + fMaxWidth + 2) { |
1092 rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1, rcClient.bottom, | 1111 rcArea = CFX_FloatRect(rcClient.left + fMinWidth + 1, rcClient.bottom, |
1093 rcClient.right - fMaxWidth - 1, rcClient.top); | 1112 rcClient.right - fMaxWidth - 1, rcClient.top); |
1094 } else { | 1113 } else { |
1095 rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1, rcClient.bottom, | 1114 rcArea = CFX_FloatRect(rcClient.left + fMinWidth + 1, rcClient.bottom, |
1096 rcClient.left + fMinWidth + 1, rcClient.top); | 1115 rcClient.left + fMinWidth + 1, rcClient.top); |
1097 } | 1116 } |
1098 break; | 1117 break; |
1099 case SBT_VSCROLL: | 1118 case SBT_VSCROLL: |
1100 if (rcClient.top - rcClient.bottom > fMinHeight + fMaxHeight + 2) { | 1119 if (rcClient.top - rcClient.bottom > fMinHeight + fMaxHeight + 2) { |
1101 rcArea = CPDF_Rect(rcClient.left, rcClient.bottom + fMinHeight + 1, | 1120 rcArea = CFX_FloatRect(rcClient.left, rcClient.bottom + fMinHeight + 1, |
1102 rcClient.right, rcClient.top - fMaxHeight - 1); | 1121 rcClient.right, rcClient.top - fMaxHeight - 1); |
1103 } else { | 1122 } else { |
1104 rcArea = CPDF_Rect(rcClient.left, rcClient.bottom + fMinHeight + 1, | 1123 rcArea = |
1105 rcClient.right, rcClient.bottom + fMinHeight + 1); | 1124 CFX_FloatRect(rcClient.left, rcClient.bottom + fMinHeight + 1, |
| 1125 rcClient.right, rcClient.bottom + fMinHeight + 1); |
1106 } | 1126 } |
1107 break; | 1127 break; |
1108 } | 1128 } |
1109 | 1129 |
1110 rcArea.Normalize(); | 1130 rcArea.Normalize(); |
1111 | 1131 |
1112 return rcArea; | 1132 return rcArea; |
1113 } | 1133 } |
1114 | 1134 |
1115 FX_FLOAT CPWL_ScrollBar::TrueToFace(FX_FLOAT fTrue) { | 1135 FX_FLOAT CPWL_ScrollBar::TrueToFace(FX_FLOAT fTrue) { |
1116 CPDF_Rect rcPosArea; | 1136 CFX_FloatRect rcPosArea; |
1117 rcPosArea = GetScrollArea(); | 1137 rcPosArea = GetScrollArea(); |
1118 | 1138 |
1119 FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth; | 1139 FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth; |
1120 fFactWidth = fFactWidth == 0 ? 1 : fFactWidth; | 1140 fFactWidth = fFactWidth == 0 ? 1 : fFactWidth; |
1121 | 1141 |
1122 FX_FLOAT fFace = 0; | 1142 FX_FLOAT fFace = 0; |
1123 | 1143 |
1124 switch (m_sbType) { | 1144 switch (m_sbType) { |
1125 case SBT_HSCROLL: | 1145 case SBT_HSCROLL: |
1126 fFace = rcPosArea.left + | 1146 fFace = rcPosArea.left + |
1127 fTrue * (rcPosArea.right - rcPosArea.left) / fFactWidth; | 1147 fTrue * (rcPosArea.right - rcPosArea.left) / fFactWidth; |
1128 break; | 1148 break; |
1129 case SBT_VSCROLL: | 1149 case SBT_VSCROLL: |
1130 fFace = rcPosArea.top - | 1150 fFace = rcPosArea.top - |
1131 fTrue * (rcPosArea.top - rcPosArea.bottom) / fFactWidth; | 1151 fTrue * (rcPosArea.top - rcPosArea.bottom) / fFactWidth; |
1132 break; | 1152 break; |
1133 } | 1153 } |
1134 | 1154 |
1135 return fFace; | 1155 return fFace; |
1136 } | 1156 } |
1137 | 1157 |
1138 FX_FLOAT CPWL_ScrollBar::FaceToTrue(FX_FLOAT fFace) { | 1158 FX_FLOAT CPWL_ScrollBar::FaceToTrue(FX_FLOAT fFace) { |
1139 CPDF_Rect rcPosArea; | 1159 CFX_FloatRect rcPosArea; |
1140 rcPosArea = GetScrollArea(); | 1160 rcPosArea = GetScrollArea(); |
1141 | 1161 |
1142 FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth; | 1162 FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth; |
1143 fFactWidth = fFactWidth == 0 ? 1 : fFactWidth; | 1163 fFactWidth = fFactWidth == 0 ? 1 : fFactWidth; |
1144 | 1164 |
1145 FX_FLOAT fTrue = 0; | 1165 FX_FLOAT fTrue = 0; |
1146 | 1166 |
1147 switch (m_sbType) { | 1167 switch (m_sbType) { |
1148 case SBT_HSCROLL: | 1168 case SBT_HSCROLL: |
1149 fTrue = (fFace - rcPosArea.left) * fFactWidth / | 1169 fTrue = (fFace - rcPosArea.left) * fFactWidth / |
(...skipping 18 matching lines...) Expand all Loading... |
1168 if (m_bMinOrMax) | 1188 if (m_bMinOrMax) |
1169 m_sData.SubSmall(); | 1189 m_sData.SubSmall(); |
1170 else | 1190 else |
1171 m_sData.AddSmall(); | 1191 m_sData.AddSmall(); |
1172 | 1192 |
1173 if (FXSYS_memcmp(&m_sData, &sTemp, sizeof(PWL_SCROLL_PRIVATEDATA)) != 0) { | 1193 if (FXSYS_memcmp(&m_sData, &sTemp, sizeof(PWL_SCROLL_PRIVATEDATA)) != 0) { |
1174 MovePosButton(TRUE); | 1194 MovePosButton(TRUE); |
1175 NotifyScrollWindow(); | 1195 NotifyScrollWindow(); |
1176 } | 1196 } |
1177 } | 1197 } |
OLD | NEW |