#ifndef DMUtil_DEFINED
#define DMUtil_DEFINED

#include "SkBitmap.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);

}  // namespace DM

#endif  // DMUtil_DEFINED
