Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: gfx/native_theme_win.cc

Issue 1988012: Added support for HTML5 progress element. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: took the feedback Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gfx/native_theme_win.h ('k') | webkit/glue/webthemeengine_impl_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium 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 #include "gfx/native_theme_win.h" 5 #include "gfx/native_theme_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <uxtheme.h> 8 #include <uxtheme.h>
9 #include <vsstyle.h> 9 #include <vsstyle.h>
10 #include <vssym32.h> 10 #include <vssym32.h>
11 11
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 right_triangle_top); 471 right_triangle_top);
472 right_triangle.lineTo(right_triangle_left, 472 right_triangle.lineTo(right_triangle_left,
473 SkIntToScalar(right_half.bottom)); 473 SkIntToScalar(right_half.bottom));
474 right_triangle.close(); 474 right_triangle.close();
475 canvas->drawPath(right_triangle, paint); 475 canvas->drawPath(right_triangle, paint);
476 } 476 }
477 } 477 }
478 return S_OK; 478 return S_OK;
479 } 479 }
480 480
481 // A ScopedRegion wrapper to set/restore clipping region during the scope.
482 class ScopedRegionClipping {
Peter Kasting 2010/05/14 18:08:11 Nit: This would be clearer as "ScopedClipRegion"
483 public:
484 explicit ScopedRegionClipping(const HDC hdc)
485 : hdc_(hdc), clip_(NULL) {
486 RECT zero_rect = { 0 };
487 clip_ = CreateRectRgnIndirect(&zero_rect);
488 GetClipRgn(hdc_, clip_);
489 }
490
491 ~ScopedRegionClipping() {
492 SelectClipRgn(hdc_, clip_);
493 }
494
495 private:
496 HDC hdc_;
497 ScopedRegion clip_;
498 DISALLOW_COPY_AND_ASSIGN(ScopedRegionClipping);
499 };
500
501 HRESULT NativeTheme::PaintProgressBar(HDC hdc,
502 RECT* bar_rect,
503 int value_part_id,
504 RECT* value_rect,
505 skia::PlatformCanvas* canvas) const {
506 // For an indeterminate progress bar, we draw a moving highlight that's animat ed
Peter Kasting 2010/05/14 18:08:11 Nit: Sorry, I gave you a set of comments that were
507 // (by the caller) across the width of the bar. The highlight part is always
508 // drawn as being as wide as the bar, to scale it properly. Therefore, we nee d
509 // to clip it against the bar rect, so that as it moves, it doesn't extend pas t
510 // the ends of the bar. For a normal progress bar, we won't try to draw past
511 // the bar ends, so this clipping is useless, but harmless.
512 ScopedRegionClipping clip(hdc);
513 IntersectClipRect(hdc, bar_rect->left, bar_rect->top,
514 bar_rect->right, bar_rect->bottom);
515
516 HANDLE handle = GetThemeHandle(PROGRESS);
517 if (handle && draw_theme_) {
518 draw_theme_(handle, hdc, PP_BAR, 0, bar_rect, NULL);
519 draw_theme_(handle, hdc, value_part_id, 0, value_rect, NULL);
520 return S_OK;
521 }
522
523 HBRUSH bg_brush = GetSysColorBrush(COLOR_BTNFACE);
524 HBRUSH fg_brush = GetSysColorBrush(COLOR_BTNSHADOW);
525 FillRect(hdc, bar_rect, bg_brush);
526 FillRect(hdc, value_rect, fg_brush);
527 DrawEdge(hdc, bar_rect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
528 return S_OK;
529 }
530
481 HRESULT NativeTheme::PaintTextField(HDC hdc, 531 HRESULT NativeTheme::PaintTextField(HDC hdc,
482 int part_id, 532 int part_id,
483 int state_id, 533 int state_id,
484 int classic_state, 534 int classic_state,
485 RECT* rect, 535 RECT* rect,
486 COLORREF color, 536 COLORREF color,
487 bool fill_content_area, 537 bool fill_content_area,
488 bool draw_edges) const { 538 bool draw_edges) const {
489 // TODO(ojan): http://b/1210017 Figure out how to give the ability to 539 // TODO(ojan): http://b/1210017 Figure out how to give the ability to
490 // exclude individual edges from being drawn. 540 // exclude individual edges from being drawn.
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 break; 750 break;
701 case TEXTFIELD: 751 case TEXTFIELD:
702 handle = open_theme_(NULL, L"Edit"); 752 handle = open_theme_(NULL, L"Edit");
703 break; 753 break;
704 case TRACKBAR: 754 case TRACKBAR:
705 handle = open_theme_(NULL, L"Trackbar"); 755 handle = open_theme_(NULL, L"Trackbar");
706 break; 756 break;
707 case WINDOW: 757 case WINDOW:
708 handle = open_theme_(NULL, L"Window"); 758 handle = open_theme_(NULL, L"Window");
709 break; 759 break;
760 case PROGRESS:
761 handle = open_theme_(NULL, L"Progress");
762 break;
710 default: 763 default:
711 NOTREACHED(); 764 NOTREACHED();
712 } 765 }
713 theme_handles_[theme_name] = handle; 766 theme_handles_[theme_name] = handle;
714 return handle; 767 return handle;
715 } 768 }
716 769
717 } // namespace gfx 770 } // namespace gfx
OLDNEW
« no previous file with comments | « gfx/native_theme_win.h ('k') | webkit/glue/webthemeengine_impl_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698