1fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org/*
2fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org * Copyright 2012 Google Inc.
3fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org *
4fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org * Use of this source code is governed by a BSD-style license that can be
5fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org * found in the LICENSE file.
6fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org */
7fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org
8fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org#include "SkTileGridPicture.h"
9fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org
10fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org#include "SkPictureStateTree.h"
11fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org#include "SkTileGrid.h"
12fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org
13a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.orgSkTileGridPicture::SkTileGridPicture(int width, int height, const TileGridInfo& info) {
14a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    SkASSERT(info.fMargin.width() >= 0);
15a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    SkASSERT(info.fMargin.height() >= 0);
16a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    fInfo = info;
17a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    // Note: SkIRects are non-inclusive of the right() column and bottom() row.
18a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    // For example, an SkIRect at 0,0 with a size of (1,1) will only have
19a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    // content at pixel (0,0) and will report left=0 and right=1, hence the
20a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    // "-1"s below.
21a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    fXTileCount = (width + info.fTileInterval.width() - 1) / info.fTileInterval.width();
22a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    fYTileCount = (height + info.fTileInterval.height() - 1) / info.fTileInterval.height();
23fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org}
24fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org
25fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.orgSkBBoxHierarchy* SkTileGridPicture::createBBoxHierarchy() const {
26a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org    return SkNEW_ARGS(SkTileGrid, (fXTileCount, fYTileCount, fInfo,
27a83b01795fdb3c2a9ebccadcff7c4194be3a288ejunov@chromium.org         SkTileGridNextDatum<SkPictureStateTree::Draw>));
28fd4515c2295bdc26a3aaa95b829479b0e5f6b3b0junov@chromium.org}
29