Revision 0729bc41
Added by Leszek Koltunski over 9 years ago
| src/main/java/org/distorted/library/Distorted.java | ||
|---|---|---|
| 387 | 387 |
*/ |
| 388 | 388 |
public static void onDestroy() |
| 389 | 389 |
{
|
| 390 |
DistortedGridFactory.release(); |
|
| 390 | 391 |
DistortedObjectList.release(); |
| 391 | 392 |
DistortedNode.release(); |
| 392 | 393 |
EffectQueue.reset(); |
| src/main/java/org/distorted/library/DistortedBitmap.java | ||
|---|---|---|
| 81 | 81 |
mSizeX= width; |
| 82 | 82 |
mSizeY= height; |
| 83 | 83 |
mSizeZ= 1; |
| 84 |
mGrid = new DistortedBitmapGrid(xsize,ysize);
|
|
| 84 |
mGrid = DistortedGridFactory.getGrid(xsize,ysize);
|
|
| 85 | 85 |
initializeData(); |
| 86 | 86 |
} |
| 87 | 87 |
|
| src/main/java/org/distorted/library/DistortedCubes.java | ||
|---|---|---|
| 96 | 96 |
mSizeX= cubeSize*Cs; |
| 97 | 97 |
mSizeY= cubeSize*Rs; |
| 98 | 98 |
mSizeZ= frontOnly ? 1 : cubeSize; |
| 99 |
mGrid = new DistortedCubesGrid(cols,desc, frontOnly);
|
|
| 99 |
mGrid = DistortedGridFactory.getGrid(cols,desc, frontOnly);
|
|
| 100 | 100 |
initializeData(); |
| 101 | 101 |
} |
| 102 | 102 |
|
| ... | ... | |
| 120 | 120 |
|
| 121 | 121 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 122 | 122 |
|
| 123 |
protected DistortedObject deepCopy(int flags)
|
|
| 124 |
{
|
|
| 125 |
return new DistortedCubes(this,flags);
|
|
| 126 |
}
|
|
| 123 |
protected DistortedObject deepCopy(int flags) |
|
| 124 |
{
|
|
| 125 |
return new DistortedCubes(this,flags); |
|
| 126 |
} |
|
| 127 | 127 |
|
| 128 | 128 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 129 | 129 |
} |
| src/main/java/org/distorted/library/DistortedCubesGrid.java | ||
|---|---|---|
| 159 | 159 |
} |
| 160 | 160 |
*/ |
| 161 | 161 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 162 |
// desc is guaranteed to be padded with 0s in the end (DistortedCubes constructor does it) |
|
| 162 | 163 |
|
| 163 | 164 |
private void buildGrid(int cols, String desc, boolean frontOnly) |
| 164 | 165 |
{
|
| ... | ... | |
| 166 | 167 |
mCols =0; |
| 167 | 168 |
dataLength=0; |
| 168 | 169 |
|
| 169 |
if( cols>0 ) |
|
| 170 |
if( cols>0 && desc.contains("1") )
|
|
| 170 | 171 |
{
|
| 171 |
int reallen = desc.length();
|
|
| 172 |
int len = reallen;
|
|
| 172 |
mCols = cols;
|
|
| 173 |
mRows = desc.length()/cols;
|
|
| 173 | 174 |
|
| 174 |
if( (reallen/cols)*cols != reallen ) |
|
| 175 |
{
|
|
| 176 |
len = ((reallen/cols)+1)*cols; |
|
| 177 |
for(int i=reallen; i<len; i++) desc += "0"; |
|
| 178 |
} |
|
| 179 |
|
|
| 180 |
if( desc.contains("1") )
|
|
| 181 |
{
|
|
| 182 |
mCols = cols; |
|
| 183 |
mRows = len/cols; |
|
| 184 |
|
|
| 185 |
mCubes = new short[mRows][mCols]; |
|
| 175 |
mCubes = new short[mRows][mCols]; |
|
| 186 | 176 |
|
| 187 |
for(int j=0; j<mCols; j++)
|
|
| 188 |
for(int i=0; i<mRows; i++)
|
|
| 189 |
mCubes[i][j] = (short)(desc.charAt(i*mCols+j) == '1' ? 1:0);
|
|
| 177 |
for(int j=0; j<mCols; j++)
|
|
| 178 |
for(int i=0; i<mRows; i++) |
|
| 179 |
mCubes[i][j] = (short)(desc.charAt(i*mCols+j) == '1' ? 1:0);
|
|
| 190 | 180 |
|
| 191 |
markRegions(); |
|
| 192 |
dataLength = computeDataLength(frontOnly); |
|
| 193 |
} |
|
| 181 |
markRegions(); |
|
| 182 |
dataLength = computeDataLength(frontOnly); |
|
| 194 | 183 |
} |
| 195 | 184 |
} |
| 196 | 185 |
|
| src/main/java/org/distorted/library/DistortedGridFactory.java | ||
|---|---|---|
| 1 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 2 |
// Copyright 2016 Leszek Koltunski // |
|
| 3 |
// // |
|
| 4 |
// This file is part of Distorted. // |
|
| 5 |
// // |
|
| 6 |
// Distorted is free software: you can redistribute it and/or modify // |
|
| 7 |
// it under the terms of the GNU General Public License as published by // |
|
| 8 |
// the Free Software Foundation, either version 2 of the License, or // |
|
| 9 |
// (at your option) any later version. // |
|
| 10 |
// // |
|
| 11 |
// Distorted is distributed in the hope that it will be useful, // |
|
| 12 |
// but WITHOUT ANY WARRANTY; without even the implied warranty of // |
|
| 13 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // |
|
| 14 |
// GNU General Public License for more details. // |
|
| 15 |
// // |
|
| 16 |
// You should have received a copy of the GNU General Public License // |
|
| 17 |
// along with Distorted. If not, see <http://www.gnu.org/licenses/>. // |
|
| 18 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 19 |
|
|
| 20 |
package org.distorted.library; |
|
| 21 |
|
|
| 22 |
import java.util.HashMap; |
|
| 23 |
/** |
|
| 24 |
* HashMap of all DistortedObjectGrids ever created. The point: we can share the Grids among |
|
| 25 |
* DistortedObjects that are of the same shape. |
|
| 26 |
*/ |
|
| 27 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 28 |
|
|
| 29 |
final class DistortedGridFactory |
|
| 30 |
{
|
|
| 31 |
private static HashMap<String,DistortedObjectGrid> mGrids = new HashMap<>(); |
|
| 32 |
|
|
| 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 34 |
// DistortedCubesGrid |
|
| 35 |
|
|
| 36 |
static synchronized DistortedObjectGrid getGrid(int cols, String desc, boolean frontOnly) |
|
| 37 |
{
|
|
| 38 |
String d = desc+("_"+cols+"_"+(frontOnly?"1":"0"));
|
|
| 39 |
|
|
| 40 |
Object o = mGrids.get(d); |
|
| 41 |
|
|
| 42 |
if( o!=null ) return (DistortedObjectGrid)o; |
|
| 43 |
|
|
| 44 |
DistortedCubesGrid grid = new DistortedCubesGrid(cols,desc,frontOnly); |
|
| 45 |
|
|
| 46 |
mGrids.put(d,grid); |
|
| 47 |
|
|
| 48 |
return grid; |
|
| 49 |
} |
|
| 50 |
|
|
| 51 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 52 |
// DistortedBitmapGrid |
|
| 53 |
|
|
| 54 |
static synchronized DistortedObjectGrid getGrid(int cols, int rows) |
|
| 55 |
{
|
|
| 56 |
String d = cols+"+"+rows; |
|
| 57 |
|
|
| 58 |
Object o = mGrids.get(d); |
|
| 59 |
|
|
| 60 |
if( o!=null ) return (DistortedObjectGrid)o; |
|
| 61 |
|
|
| 62 |
DistortedBitmapGrid grid = new DistortedBitmapGrid(cols,rows); |
|
| 63 |
|
|
| 64 |
mGrids.put(d,grid); |
|
| 65 |
|
|
| 66 |
return grid; |
|
| 67 |
} |
|
| 68 |
|
|
| 69 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 70 |
|
|
| 71 |
static synchronized void release() |
|
| 72 |
{
|
|
| 73 |
mGrids.clear(); |
|
| 74 |
} |
|
| 75 |
|
|
| 76 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 77 |
} |
|
Also available in: Unified diff
Add DistortedGridFactory to share Grids among same-shaped DistortedObjects.