< prev index next >

src/java.desktop/share/classes/sun/java2d/pipe/RegionIterator.java

Print this page


   1 /*
   2  * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  53 
  54     /**
  55      * Copies the iteration state from this RegionIterator object
  56      * into another RegionIterator object to allow multiple iteration
  57      * branches from the current position.
  58      */
  59     public void copyStateFrom(RegionIterator ri) {
  60         if (this.region != ri.region) {
  61             throw new InternalError("region mismatch");
  62         }
  63         this.curIndex = ri.curIndex;
  64         this.numXbands = ri.numXbands;
  65     }
  66 
  67     /**
  68      * Moves the iteration state to the beginning of the next
  69      * Y range in the region returning true if one is found
  70      * and recording the low and high Y coordinates of the
  71      * range in the array at locations 1 and 3 respectively.
  72      */
  73     public boolean nextYRange(int range[]) {
  74         curIndex += numXbands * 2;
  75         numXbands = 0;
  76         if (curIndex >= region.endIndex) {
  77             return false;
  78         }
  79         range[1] = region.bands[curIndex++];
  80         range[3] = region.bands[curIndex++];
  81         numXbands = region.bands[curIndex++];
  82         return true;
  83     }
  84 
  85     /**
  86      * Moves the iteration state to the beginning of the next
  87      * X band in the current Y range returning true if one is
  88      * found and recording the low and high X coordinates of
  89      * the range in the array at locations 0 and 2 respectively.
  90      */
  91     public boolean nextXBand(int range[]) {
  92         if (numXbands <= 0) {
  93             return false;
  94         }
  95         numXbands--;
  96         range[0] = region.bands[curIndex++];
  97         range[2] = region.bands[curIndex++];
  98         return true;
  99     }
 100 }
   1 /*
   2  * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  53 
  54     /**
  55      * Copies the iteration state from this RegionIterator object
  56      * into another RegionIterator object to allow multiple iteration
  57      * branches from the current position.
  58      */
  59     public void copyStateFrom(RegionIterator ri) {
  60         if (this.region != ri.region) {
  61             throw new InternalError("region mismatch");
  62         }
  63         this.curIndex = ri.curIndex;
  64         this.numXbands = ri.numXbands;
  65     }
  66 
  67     /**
  68      * Moves the iteration state to the beginning of the next
  69      * Y range in the region returning true if one is found
  70      * and recording the low and high Y coordinates of the
  71      * range in the array at locations 1 and 3 respectively.
  72      */
  73     public boolean nextYRange(int[] range) {
  74         curIndex += numXbands * 2;
  75         numXbands = 0;
  76         if (curIndex >= region.endIndex) {
  77             return false;
  78         }
  79         range[1] = region.bands[curIndex++];
  80         range[3] = region.bands[curIndex++];
  81         numXbands = region.bands[curIndex++];
  82         return true;
  83     }
  84 
  85     /**
  86      * Moves the iteration state to the beginning of the next
  87      * X band in the current Y range returning true if one is
  88      * found and recording the low and high X coordinates of
  89      * the range in the array at locations 0 and 2 respectively.
  90      */
  91     public boolean nextXBand(int[] range) {
  92         if (numXbands <= 0) {
  93             return false;
  94         }
  95         numXbands--;
  96         range[0] = region.bands[curIndex++];
  97         range[2] = region.bands[curIndex++];
  98         return true;
  99     }
 100 }
< prev index next >