1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2010 Google Inc. 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 6ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */ 7ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 8ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#ifndef GrRect_DEFINED 9ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#define GrRect_DEFINED 10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 11fd03d4a829efe2d77a712fd991927c55f59a2ffecommit-bot@chromium.org#include "SkTypes.h" 1220efde71b4fd28691b10c8f1cfe15cb2aafddaeareed@google.com#include "SkRect.h" 13ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 14ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.comstruct GrIRect16 { 15ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com int16_t fLeft, fTop, fRight, fBottom; 16fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 172f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org static GrIRect16 SK_WARN_UNUSED_RESULT MakeEmpty() { 182f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org GrIRect16 r; 192f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org r.setEmpty(); 202f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org return r; 212f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org } 222f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org 23952841bf41a81228c23d16c7204b458abe0d7136robertphillips static GrIRect16 SK_WARN_UNUSED_RESULT MakeWH(int16_t w, int16_t h) { 24952841bf41a81228c23d16c7204b458abe0d7136robertphillips GrIRect16 r; 25952841bf41a81228c23d16c7204b458abe0d7136robertphillips r.set(0, 0, w, h); 26952841bf41a81228c23d16c7204b458abe0d7136robertphillips return r; 27952841bf41a81228c23d16c7204b458abe0d7136robertphillips } 28952841bf41a81228c23d16c7204b458abe0d7136robertphillips 29952841bf41a81228c23d16c7204b458abe0d7136robertphillips static GrIRect16 SK_WARN_UNUSED_RESULT MakeXYWH(int16_t x, int16_t y, int16_t w, int16_t h) { 30952841bf41a81228c23d16c7204b458abe0d7136robertphillips GrIRect16 r; 31952841bf41a81228c23d16c7204b458abe0d7136robertphillips r.set(x, y, x + w, y + h); 32952841bf41a81228c23d16c7204b458abe0d7136robertphillips return r; 33952841bf41a81228c23d16c7204b458abe0d7136robertphillips } 34952841bf41a81228c23d16c7204b458abe0d7136robertphillips 35ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com int width() const { return fRight - fLeft; } 36ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com int height() const { return fBottom - fTop; } 37ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com int area() const { return this->width() * this->height(); } 38ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com bool isEmpty() const { return fLeft >= fRight || fTop >= fBottom; } 39fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 402f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org void setEmpty() { memset(this, 0, sizeof(*this)); } 412f569980c949a9bbc4a4ab54e356264240306159commit-bot@chromium.org 42952841bf41a81228c23d16c7204b458abe0d7136robertphillips void set(int16_t left, int16_t top, int16_t right, int16_t bottom) { 43952841bf41a81228c23d16c7204b458abe0d7136robertphillips fLeft = left; 44952841bf41a81228c23d16c7204b458abe0d7136robertphillips fTop = top; 45952841bf41a81228c23d16c7204b458abe0d7136robertphillips fRight = right; 46952841bf41a81228c23d16c7204b458abe0d7136robertphillips fBottom = bottom; 47952841bf41a81228c23d16c7204b458abe0d7136robertphillips } 48952841bf41a81228c23d16c7204b458abe0d7136robertphillips 49fd03d4a829efe2d77a712fd991927c55f59a2ffecommit-bot@chromium.org void set(const SkIRect& r) { 5020efde71b4fd28691b10c8f1cfe15cb2aafddaeareed@google.com fLeft = SkToS16(r.fLeft); 5120efde71b4fd28691b10c8f1cfe15cb2aafddaeareed@google.com fTop = SkToS16(r.fTop); 5220efde71b4fd28691b10c8f1cfe15cb2aafddaeareed@google.com fRight = SkToS16(r.fRight); 5320efde71b4fd28691b10c8f1cfe15cb2aafddaeareed@google.com fBottom = SkToS16(r.fBottom); 54d302f1401b3c9aea094804bad4e76de98782cfe8bsalomon@google.com } 55ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}; 56ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 57ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#endif 58