15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "skia/ext/skia_utils_win.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include <stddef.h> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkRect.h" 116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "third_party/skia/include/core/SkTypes.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/effects/SkGradientShader.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(offsetof(RECT, left) == offsetof(SkIRect, fLeft), o1); 176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(offsetof(RECT, top) == offsetof(SkIRect, fTop), o2); 186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(offsetof(RECT, right) == offsetof(SkIRect, fRight), o3); 196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(offsetof(RECT, bottom) == offsetof(SkIRect, fBottom), o4); 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(sizeof(RECT().left) == sizeof(SkIRect().fLeft), o5); 216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(sizeof(RECT().top) == sizeof(SkIRect().fTop), o6); 226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(sizeof(RECT().right) == sizeof(SkIRect().fRight), o7); 236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(sizeof(RECT().bottom) == sizeof(SkIRect().fBottom), o8); 246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)SK_COMPILE_ASSERT(sizeof(RECT) == sizeof(SkIRect), o9); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace skia { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)POINT SkPointToPOINT(const SkPoint& point) { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) POINT win_point = { 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SkScalarRoundToInt(point.fX), SkScalarRoundToInt(point.fY) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return win_point; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkRect RECTToSkRect(const RECT& rect) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkRect sk_rect = { SkIntToScalar(rect.left), SkIntToScalar(rect.top), 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkIntToScalar(rect.right), SkIntToScalar(rect.bottom) }; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sk_rect; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkColor COLORREFToSkColor(COLORREF color) { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _MSC_VER 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SkColorSetRGB(GetRValue(color), GetGValue(color), GetBValue(color)); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ARGB = 0xFF000000 | ((0BGR -> RGB0) >> 8) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0xFF000000u | (_byteswap_ulong(color) >> 8); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COLORREF SkColorToCOLORREF(SkColor color) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _MSC_VER 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return RGB(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color)); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 0BGR = ((ARGB -> BGRA) >> 8) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (_byteswap_ulong(color) >> 8); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace skia 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63