Index: tools/telemetry/telemetry/core/chrome/png_bitmap.py |
=================================================================== |
--- tools/telemetry/telemetry/core/chrome/png_bitmap.py (revision 182999) |
+++ tools/telemetry/telemetry/core/chrome/png_bitmap.py (working copy) |
@@ -1,69 +0,0 @@ |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
-import sys |
-import os |
-import base64 |
- |
-PNG_PATH = os.path.join(os.path.dirname(__file__), '../../../third_party/png') |
-if PNG_PATH not in sys.path: |
- sys.path.append(PNG_PATH) |
- |
-import png # pylint: disable=F0401 |
- |
-class PngColor(object): |
- """Encapsulates an RGB color retreived from a PngBitmap""" |
- |
- def __init__(self, r, g, b, a=255): |
- self.r = r |
- self.g = g |
- self.b = b |
- self.a = a |
- |
- def IsEqual(self, expected_color, tolerance=0): |
- """Verifies that the color is within a given tolerance of |
- the expected color""" |
- r_diff = abs(self.r - expected_color.r) |
- g_diff = abs(self.g - expected_color.g) |
- b_diff = abs(self.b - expected_color.b) |
- a_diff = abs(self.a - expected_color.a) |
- return (r_diff <= tolerance and g_diff <= tolerance |
- and b_diff <= tolerance and a_diff <= tolerance) |
- |
- def AssertIsRGB(self, r, g, b, tolerance=0): |
- assert self.IsEqual(PngColor(r, g, b), tolerance) |
- |
- def AssertIsRGBA(self, r, g, b, a, tolerance=0): |
- assert self.IsEqual(PngColor(r, g, b, a), tolerance) |
- |
-class PngBitmap(object): |
- """Utilities for parsing and inspecting inspecting a PNG""" |
- |
- def __init__(self, base64_png): |
- self._png_data = base64.b64decode(base64_png) |
- self._png = png.Reader(bytes=self._png_data) |
- rgba8_data = self._png.asRGBA8() |
- self._width = rgba8_data[0] |
- self._height = rgba8_data[1] |
- self._pixels = list(rgba8_data[2]) |
- self._metadata = rgba8_data[3] |
- |
- @property |
- def width(self): |
- """Width of the snapshot""" |
- return self._width |
- |
- @property |
- def height(self): |
- """Height of the snapshot""" |
- return self._height |
- |
- def GetPixelColor(self, x, y): |
- """Returns a PngColor for the pixel at (x, y)""" |
- row = self._pixels[y] |
- offset = x * 4 |
- return PngColor(row[offset], row[offset+1], row[offset+2], row[offset+3]) |
- |
- def WriteFile(self, path): |
- with open(path, "wb") as f: |
- f.write(self._png_data) |