/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKHITBOX_H_ #define SKHITBOX_H_ #include "SkBitmap.h" #include "SkUnPreMultiply.h" /* NOTE(chudy): It's possible that this class can be entirely static similar to * SkObjectParser. We will have to pass in the fHitBox void * every call. */ class SkHitBox { public: SkHitBox(); ~SkHitBox(); /** Allocates enough space in memory for our hitbox pointer to contain a layer value for every pixel. Initializes every value to 0. */ void alloc(int width, int height); /** Compares the new SkBitmap compared to the SkBitmap from the last call. Updates our hitbox with the draw command number if different. */ void updateHitBox(SkBitmap* newBitmap, int layer); /** Compares point x,y in the new bitmap compared to the saved previous one. Updates hitpoint with the draw command number if different. */ void updateHitPoint(SkBitmap* newBitmap, int layer); /** Sets the target hitpoint we are attempting to find the layer of. */ void setHitPoint(int x, int y) { fX = x; fY = y; fLayer = 0; } /** Returns a pointer to the start of the hitbox. */ int* getHitBox() { return fHitBox; } /** Returns the layer numbr corresponding to the point (fX, fY) in this class. */ int getPoint() { return fLayer; } /** Checks to see if a mouse click has been passed in. */ bool pointIsSet() { return !(fX == -1 && fY == -1); } private: SkBitmap fPrev; int* fHitBox; int fX; int fY; int fLayer; }; #endif /* SKHITBOX_H_ */