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) {
|