< prev index next >

src/java.desktop/share/classes/sun/java2d/marlin/MarlinCache.java

Print this page


   1 /*
   2  * Copyright (c) 2007, 2015, 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


 573             );
 574         }
 575 
 576         // update tile used marks:
 577         int tx = from >> _TILE_SIZE_LG; // inclusive
 578         if (tx < tileMin) {
 579             tileMin = tx;
 580         }
 581 
 582         tx = ((to - 1) >> _TILE_SIZE_LG) + 1; // exclusive (+1 to be sure)
 583         if (tx > tileMax) {
 584             tileMax = tx;
 585         }
 586 
 587         // Clear alpha row for reuse:
 588         if (px1 > bboxX1) {
 589             alphaRow[to    ] = 0;
 590             alphaRow[to + 1] = 0;
 591         }
 592         if (doChecks) {
 593             IntArrayCache.check(blkFlags, 0, blkFlags.length, 0);
 594             IntArrayCache.check(alphaRow, 0, alphaRow.length, 0);
 595         }
 596 
 597         if (doMonitors) {
 598             RendererContext.stats.mon_rdr_copyAARow.stop();
 599         }
 600     }
 601 
 602     long startRLERow(final int row, final int x0, final int x1) {
 603         // rows are supposed to be added by increasing y.
 604         rowAAx0[row]  = x0; // first pixel inclusive
 605         rowAAx1[row]  = x1; // last pixel exclusive
 606         rowAAEnc[row] = 1; // RLE encoding
 607         rowAAPos[row] = 0L; // position = 0
 608 
 609         // update row index to current position:
 610         return (rowAAChunkIndex[row] = rowAAChunkPos);
 611     }
 612 
 613     private void expandRowAAChunk(final long needSize) {
 614         if (doStats) {


   1 /*
   2  * Copyright (c) 2007, 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


 573             );
 574         }
 575 
 576         // update tile used marks:
 577         int tx = from >> _TILE_SIZE_LG; // inclusive
 578         if (tx < tileMin) {
 579             tileMin = tx;
 580         }
 581 
 582         tx = ((to - 1) >> _TILE_SIZE_LG) + 1; // exclusive (+1 to be sure)
 583         if (tx > tileMax) {
 584             tileMax = tx;
 585         }
 586 
 587         // Clear alpha row for reuse:
 588         if (px1 > bboxX1) {
 589             alphaRow[to    ] = 0;
 590             alphaRow[to + 1] = 0;
 591         }
 592         if (doChecks) {
 593             IntArrayCache.check(blkFlags, blkW, blkE, 0);
 594             IntArrayCache.check(alphaRow, from, px1 - bboxX0, 0);
 595         }
 596 
 597         if (doMonitors) {
 598             RendererContext.stats.mon_rdr_copyAARow.stop();
 599         }
 600     }
 601 
 602     long startRLERow(final int row, final int x0, final int x1) {
 603         // rows are supposed to be added by increasing y.
 604         rowAAx0[row]  = x0; // first pixel inclusive
 605         rowAAx1[row]  = x1; // last pixel exclusive
 606         rowAAEnc[row] = 1; // RLE encoding
 607         rowAAPos[row] = 0L; // position = 0
 608 
 609         // update row index to current position:
 610         return (rowAAChunkIndex[row] = rowAAChunkPos);
 611     }
 612 
 613     private void expandRowAAChunk(final long needSize) {
 614         if (doStats) {


< prev index next >