| #ifndef DMUtil_DEFINED | 
 | #define DMUtil_DEFINED | 
 |  | 
 | #include "SkBitmap.h" | 
 | #include "SkCanvas.h" | 
 | #include "SkString.h" | 
 | #include "gm.h" | 
 |  | 
 | class SkBBHFactory; | 
 |  | 
 | // Small free functions used in more than one place in DM. | 
 |  | 
 | namespace DM { | 
 |  | 
 | // UnderJoin("a", "b") -> "a_b" | 
 | SkString UnderJoin(const char* a, const char* b); | 
 |  | 
 | // "foo_bar.skp" -> "foo-bar_skp" | 
 | SkString FileToTaskName(SkString); | 
 |  | 
 | // Draw gm to picture.  If skr is true, uses EXPERIMENTAL_beginRecording(). | 
 | SkPicture* RecordPicture(skiagm::GM* gm, | 
 |                          SkBBHFactory* factory = NULL, | 
 |                          bool skr = false); | 
 |  | 
 | // Allocate an empty bitmap with this size and depth. | 
 | void AllocatePixels(SkColorType, int w, int h, SkBitmap* bitmap); | 
 | // Allocate an empty bitmap the same size and depth as reference. | 
 | void AllocatePixels(const SkBitmap& reference, SkBitmap* bitmap); | 
 |  | 
 | // Draw picture to bitmap. | 
 | void DrawPicture(const SkPicture& picture, SkBitmap* bitmap); | 
 |  | 
 | // What is the maximum component difference in these bitmaps? | 
 | unsigned MaxComponentDifference(const SkBitmap& a, const SkBitmap& b); | 
 |  | 
 | // Are these identical bitmaps? | 
 | bool BitmapsEqual(const SkBitmap& a, const SkBitmap& b); | 
 |  | 
 | // Hook to modify canvas using global flag values (e.g. --matrix). | 
 | void CanvasPreflight(SkCanvas*); | 
 |  | 
 | }  // namespace DM | 
 |  | 
 | #endif  // DMUtil_DEFINED |