Project

General

Profile

« Previous | Next » 

Revision cacc63de

Added by Leszek Koltunski almost 8 years ago

Fix Lint warnings, correct a lot of comments, adjust EffectListener interface.

View differences:

src/main/java/org/distorted/library/Distorted.java
37 37
public class Distorted 
38 38
  {
39 39
  /**
40
   * When creating an instance of a DistortedObject from another instance, do not clone anything.
40
   * When creating an instance of a DistortedTexture (or Tree) from another instance, do not clone anything.
41 41
   * Used in the copy constructor.
42 42
   */
43 43
  public static final int CLONE_NOTHING = 0x0;
44 44
  /**
45
   * When creating an instance of a DistortedObject from another instance, clone the Bitmap that's
46
   * backing up our DistortedObject. 
45
   * When creating an instance of a DistortedTexture from another instance, clone the Bitmap that's
46
   * backing up our DistortedTexture.
47 47
   * <p>
48
   * This way we can have two DistortedObjects, both backed up by the same Bitmap, to which we can 
48
   * This way we can have two DistortedTextures, both backed up by the same Bitmap, to which we can
49 49
   * apply different effects. Used in the copy constructor.
50 50
   */
51 51
  public static final int CLONE_BITMAP  = 0x1;
52 52
  /**
53
   * When creating an instance of a DistortedObject from another instance, clone the Matrix Effects.
53
   * When creating an instance of a DistortedEffects from another instance, clone the Matrix Effects.
54 54
   * <p>
55
   * This way we can have two different DistortedObjects with different Bitmaps behind them, both 
56
   * always displayed in exactly the same place on the screen. Applying any matrix-based effect to 
57
   * one of them automatically applies the effect to the other. Used in the copy constructor.
55
   * This way we can have two different DistortedEffects sharing the MATRIX queue.
58 56
   */
59 57
  public static final int CLONE_MATRIX = 0x2;
60 58
  /**
61
   * When creating an instance of a DistortedObject from another instance, clone the Vertex Effects.
59
   * When creating an instance of a DistortedEffects from another instance, clone the Vertex Effects.
62 60
   * <p>
63
   * This way we can have two different DistortedObjects with different Bitmaps behind them, both 
64
   * always with the same Vertex effects. Applying any vertex-based effect to one of them automatically 
65
   * applies the effect to the other. Used in the copy constructor.
61
   * This way we can have two different DistortedEffects sharing the VERTEX queue.
66 62
   */
67 63
  public static final int CLONE_VERTEX  = 0x4;
68 64
  /**
69
   * When creating an instance of a DistortedObject from another instance, clone the Fragment Effects.
65
   * When creating an instance of a DistortedEffects from another instance, clone the Fragment Effects.
70 66
   * <p>
71
   * This way we can have two different DistortedObjects with different Bitmaps behind them, both 
72
   * always with the same Fragment effects. Applying any fragment-based effect to one of them automatically 
73
   * applies the effect to the other. Used in the copy constructor.
67
   * This way we can have two different DistortedEffects sharing the FRAGMENT queue.
74 68
   */
75 69
  public static final int CLONE_FRAGMENT= 0x8;
76 70
  /**
77 71
   * When creating an instance of a DistortedTree from another instance, clone the children Nodes.
78 72
   * <p>
79
   * This is mainly useful for creating many similar sub-trees of Bitmaps and rendering then at different places
80
   * on the screen, with (optionally) different effects of the top-level root Bitmap.   
73
   * This is mainly useful for creating many similar sub-trees and rendering then at different places
74
   * on the screen with (optionally) different Effects.
81 75
   */
82 76
  public static final int CLONE_CHILDREN= 0x10;
83 77

  
......
391 385

  
392 386
///////////////////////////////////////////////////////////////////////////////////////////////////
393 387
/**
394
 * Sets the maximum number of Matrix effects that can be applied to a single DistortedObject at one time.
388
 * Sets the maximum number of Matrix effects that can be stored in a single EffectQueue at one time.
395 389
 * This can fail if:
396 390
 * <ul>
397 391
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
398 392
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called
399 393
 *     before the Vertex Shader gets compiled, i.e. before the call to {@link #onSurfaceCreated}. After this
400 394
 *     time only decreasing the value of 'max' is permitted.
401
 * <li>Furthermore, this needs to be called before any DistortedObject gets created.
395
 * <li>Furthermore, this needs to be called before any DistortedEffects gets created.
402 396
 * </ul>
403 397
 * 
404 398
 * @param max new maximum number of simultaneous Matrix Effects. Has to be a non-negative number not greater
......
412 406
  
413 407
///////////////////////////////////////////////////////////////////////////////////////////////////
414 408
/**
415
 * Sets the maximum number of Vertex effects that can be applied to a single DistortedObject at one time.
409
 * Sets the maximum number of Vertex effects that can be stored in a single EffectQueue at one time.
416 410
 * This can fail if:
417 411
 * <ul>
418 412
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
419 413
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called 
420 414
 *     before the Vertex Shader gets compiled, i.e. before the call to {@link #onSurfaceCreated}. After this
421 415
 *     time only decreasing the value of 'max' is permitted.
422
* <li>Furthermore, this needs to be called before any DistortedObject gets created.
416
* <li>Furthermore, this needs to be called before any DistortedEffects get created.
423 417
 * </ul>
424 418
 * 
425 419
 * @param max new maximum number of simultaneous Vertex Effects. Has to be a non-negative number not greater
......
433 427

  
434 428
///////////////////////////////////////////////////////////////////////////////////////////////////
435 429
/**
436
 * Sets the maximum number of Fragment effects that can be applied to a single DistortedObject at one time.
430
 * Sets the maximum number of Fragment effects that can be stored in a single EffectQueue at one time.
437 431
 * This can fail if:
438 432
 * <ul>
439 433
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
440 434
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called 
441 435
 *     before the Fragment Shader gets compiled, i.e. before the call to {@link #onSurfaceCreated}. After this
442 436
 *     time only decreasing the value of 'max' is permitted.
443
 * <li>Furthermore, this needs to be called before any DistortedObject gets created.
437
 * <li>Furthermore, this needs to be called before any DistortedEffects get created.
444 438
 * </ul>
445 439
 * 
446 440
 * @param max new maximum number of simultaneous Fragment Effects. Has to be a non-negative number not greater
src/main/java/org/distorted/library/EffectMessageSender.java
35 35
    long mEffectID;
36 36
    int mEffectName;
37 37
    long mBitmapID;
38
    String mStr;
39 38

  
40
    Message(EffectListener l, EffectMessage m, long id, int name, long bmpID, String str)
39
    Message(EffectListener l, EffectMessage m, long id, int name, long bmpID)
41 40
      {
42 41
      mListener   = l;
43 42
      mMessage    = m;
44 43
      mEffectID   = id;
45 44
      mEffectName = name;
46 45
      mBitmapID   = bmpID;
47
      mStr        = str;
48 46
      }
49 47
    }
50 48
  
......
108 106
      while( mList.size()>0 )
109 107
        {
110 108
        tmp = mList.remove(0);
111
        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, EffectNames.getName(tmp.mEffectName),
112
                                    tmp.mBitmapID, tmp.mStr);
109
        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, EffectNames.getName(tmp.mEffectName),tmp.mBitmapID);
113 110
        }
114 111

  
115 112
      synchronized(mThis)
......
131 128
  
132 129
///////////////////////////////////////////////////////////////////////////////////////////////////
133 130
        
134
  static void newMessage(EffectListener l, EffectMessage m, long id, int name, long bmpID, String str)
131
  static void newMessage(EffectListener l, EffectMessage m, long id, int name, long bmpID)
135 132
    {
136
    Message msg = mThis.new Message(l,m,id,name,bmpID,str);
133
    Message msg = mThis.new Message(l,m,id,name,bmpID);
137 134
    mList.add(msg);
138 135

  
139 136
    synchronized(mThis)
src/main/java/org/distorted/library/EffectNames.java
21 21

  
22 22
///////////////////////////////////////////////////////////////////////////////////////////////////
23 23
/**
24
 * Names of Effects one can apply to DistortedObjects.
24
 * Names of Effects one can add to the DistortedEffects queues.
25 25
 * <p>
26 26
 * Effect's 'Type' is one of the constants defined in {@link EffectTypes}.
27 27
 * </p>
......
144 144
  SWIRL            ( EffectTypes.VERTEX  ,   new float[] {0.0f}           , 1, true, true ),
145 145
  /**
146 146
   * Directional sinusoidal wave effect. The direction of the wave is given by the 'angle'
147
   * parameters. Details: {@link DistortedObject#wave(org.distorted.library.type.Data5D,org.distorted.library.type.Data3D)}
147
   * parameters. Details: {@link DistortedEffects#wave(org.distorted.library.type.Data5D,org.distorted.library.type.Data3D)}
148 148
   * <p>
149 149
   * Uniforms: (amplitude,length,phase,angleAlpha,
150 150
   *            angleBeta, centerX,centerY,centerZ,
src/main/java/org/distorted/library/EffectQueue.java
92 92
    }
93 93

  
94 94
///////////////////////////////////////////////////////////////////////////////////////////////////
95
// Only max Byte.MAX_VALUE concurrent effects per DistortedObject.
95
// Only max Byte.MAX_VALUE concurrent effects per DistortedEffects object.
96 96
// If you want more, change type of the mNumEffects, mIDIndex and mFreeIndexes variables to shorts.
97
// (although probably this many uniforms will not fit in the shaders anyway!)
97 98

  
98 99
  static boolean setMax(int index, int m)
99 100
    {
......
216 217
                                          EffectMessage.EFFECT_REMOVED,
217 218
                                          (removedID<<EffectTypes.LENGTH)+EffectNames.getType(removedName).type,
218 219
                                          removedName,
219
                                          mObjectID,
220
                                          null);
220
                                          mObjectID);
221 221
        }
222 222
      }
223 223

  
......
266 266
                                      EffectMessage.EFFECT_REMOVED,
267 267
                                      (removedID<<EffectTypes.LENGTH)+EffectNames.getType(removedName).type,
268 268
                                      removedName,
269
                                      mObjectID,
270
                                      null);
269
                                      mObjectID);
271 270
    }
272 271
  
273 272
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/library/EffectQueueFragment.java
76 76
                                          EffectMessage.EFFECT_FINISHED,
77 77
                                          (mID[i]<<EffectTypes.LENGTH)+EffectTypes.FRAGMENT.type,
78 78
                                          mName[i],
79
                                          mObjectID,
80
                                          null);
79
                                          mObjectID);
81 80
      
82 81
        if( EffectNames.isUnity(mName[i], mUniforms, NUM_UNIFORMS*i) )
83 82
          {
src/main/java/org/distorted/library/EffectQueueMatrix.java
115 115
                                          EffectMessage.EFFECT_FINISHED,
116 116
                                         (mID[i]<<EffectTypes.LENGTH)+EffectTypes.MATRIX.type,
117 117
                                          mName[i],
118
                                          mObjectID,
119
                                          null);
118
                                          mObjectID);
120 119

  
121 120
        if( EffectNames.isUnity(mName[i], mUniforms, NUM_UNIFORMS*i) )
122 121
          {
src/main/java/org/distorted/library/EffectQueueVertex.java
86 86
                                            EffectMessage.EFFECT_FINISHED,
87 87
                                           (mID[i]<<EffectTypes.LENGTH)+EffectTypes.VERTEX.type,
88 88
                                            mName[i],
89
                                            mObjectID,
90
                                            null);
89
                                            mObjectID);
91 90

  
92 91
          if( EffectNames.isUnity(mName[i], mUniforms, NUM_UNIFORMS*i) )
93 92
            {
src/main/java/org/distorted/library/EffectTypes.java
21 21

  
22 22
///////////////////////////////////////////////////////////////////////////////////////////////////
23 23
/**
24
 * Types of Effects one can apply to DistortedObjects.
24
 * Types of Effects one can add to the DistortedEffects queues.
25 25
 * <p>
26 26
 * Each effect type goes to an independent queue; the queues get executed one-by-one
27 27
 * and are each a class descendant from EffectQueue.
src/main/java/org/distorted/library/GridCubes.java
162 162
     }   
163 163
*/
164 164
///////////////////////////////////////////////////////////////////////////////////////////////////
165
// desc is guaranteed to be padded with 0s in the end (DistortedCubes constructor does it)
166 165

  
167 166
   private void prepareDataStructures(int cols, String desc, boolean frontOnly)
168 167
     {
src/main/java/org/distorted/library/GridFlat.java
30 30
  private int remainingVert;
31 31

  
32 32
///////////////////////////////////////////////////////////////////////////////////////////////////
33
// Create a flat, full grid. cols and rows is guaranteed (by DistortedBitmap constructor)
34
// to be in 1,2,...,256.
33
// Create a flat, full grid.
35 34

  
36 35
   private void computeNumberOfVertices(int cols, int rows)
37 36
     {
src/main/java/org/distorted/library/message/EffectListener.java
25 25

  
26 26
/**
27 27
 * This interface lets users of the Distorted library get notified when something happens to one of the effects.
28
 * To receive the notifications, we first have to register with a call to {@link org.distorted.library.DistortedObject#addEventListener(EffectListener)}.
28
 * To receive the notifications, we first have to register with a call to {@link org.distorted.library.DistortedEffects#registerForMessages(EffectListener)}.
29 29
 * List of all possible events that can happen is defined in {@link EffectMessage}
30 30
 */
31 31

  
......
36 36
 * 
37 37
 * @param eventType  Type of event that happened.
38 38
 * @param effectID   ID of the effect the event happened to. This ID must have been previously returned by one
39
 *                   of the DistortedObject.{deform,distort,move,...} functions.
39
 *                   of the DistortedEffects.{deform,distort,move,...} functions.
40 40
 * @param effectName Name of the effect as defined by EffectNames.
41
 * @param objectID   the ID of the DistortedObject object, as returned by {@link org.distorted.library.DistortedObject#getID()},
42
 *                   this event happened to. If the Object has been created using a copy constructor
43
 *                   from another instance of DistortedObject, the ID here will be the one of the original object.
44
 * @param message    Any message string associated with it. 'Failed' event types have one.
41
 * @param objectID   the ID of the DistortedEffects object, as returned by {@link org.distorted.library.DistortedEffects#getID()},
42
 *                   this event happened to.
45 43
 * @see EffectMessage
46 44
 * @see EffectNames
47 45
 */
48 46
   
49
  void effectMessage(final EffectMessage eventType, final long effectID, final EffectNames effectName, final long objectID, final String message);
47
  void effectMessage(final EffectMessage eventType, final long effectID, final EffectNames effectName, final long objectID);
50 48
  }
51 49

  
52 50
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/library/message/EffectMessage.java
30 30
/**
31 31
 * The effect has been removed. This can happen if:
32 32
 * <ul>
33
 * <li> someone explicitly removed the effect with a call to {@link org.distorted.library.DistortedObject#abortEffect(long)}
33
 * <li> someone explicitly removed the effect with a call to {@link org.distorted.library.DistortedEffects#abortEffect(long)}
34 34
 *      (or one of the other 'abort' methods)
35 35
 * <li> the interpolation of the effect has finished and the end result is equal to the effect's unity.
36 36
 * </ul>    
......
49 49
 * If then the end effect is equal to the effect's unity, then immediately after this message you
50 50
 * will also get a EFFECT_REMOVED message.
51 51
 */
52
  EFFECT_FINISHED,
53

  
54
  /**
55
 * The effect has failed to properly execute.
56
 * <p>
57
 * Currently only OTHER effects (saving to PNG file and to a MP4 movie) can fail.
58
 */
59
  EFFECT_FAILED
52
  EFFECT_FINISHED
60 53
  }
61 54

  
62 55
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/library/type/Dynamic3D.java
31 31
  {
32 32
  private Vector<Static3D> vv;
33 33
  private Static3D prev, curr, next;
34
/*
35
private float a0,a1,a2;
36
private float f0, f1;
37
private float b00,b01,b02;
38
private float b10,b11,b12;
39
private float b20,b21,b22;
40
private float oldTime;
41
*/
34

  
42 35
///////////////////////////////////////////////////////////////////////////////////////////////////
43 36
// no array bounds checking!
44 37
  
src/main/java/org/distorted/library/type/DynamicQuat.java
37 37
// omega, sinOmega, cosOmega - angle between pair of quaternions, its sinus and cosinus.
38 38
//  
39 39
// (vx,vy,vz,vw) is the original vector from vv (copied here so when interpolating we can see if it is 
40
// still valid and if not - rebuild the Cache
40
// still valid and if not - rebuild the Cache.
41 41
  
42 42
  private class VectorCacheQuat
43 43
    {
......
398 398
    }  
399 399

  
400 400
  }
401
///////////////////////////////////////////////////////////////////////////////////////////////////
402
//
src/main/java/org/distorted/library/type/Static1D.java
22 22
///////////////////////////////////////////////////////////////////////////////////////////////////
23 23
/**
24 24
 * A 1-dimensional data structure containing a single float. The float has no particular meaning; 
25
 * when this data structure is used in Interpolators, we can think of it as a 1-dimensional Point 
25
 * when this data structure is used in Dynamics, we can think of it as a 1-dimensional Point
26 26
 * a few of which the Dynamic interpolates between.
27 27
 */
28 28

  
......
106 106
    {
107 107
    return x;  
108 108
    }
109
  
110
///////////////////////////////////////////////////////////////////////////////////////////////////
111
// end of class   
109

  
112 110
  }
src/main/java/org/distorted/library/type/Static2D.java
22 22
///////////////////////////////////////////////////////////////////////////////////////////////////
23 23
/**
24 24
 * A 2-dimensional data structure containing two floats. The floats have no particular meaning; 
25
 * when this data structure is used in Interpolators, we can think of it as a 2-dimensional Point 
25
 * when this data structure is used in Dynamics, we can think of it as a 2-dimensional Point
26 26
 * a few of which the Dynamic interpolates between.
27 27
 */
28 28

  
......
115 115
    return y;  
116 116
    }
117 117

  
118
///////////////////////////////////////////////////////////////////////////////////////////////////
119
// end of class   
120 118
  }
src/main/java/org/distorted/library/type/Static3D.java
22 22
///////////////////////////////////////////////////////////////////////////////////////////////////
23 23
/**
24 24
 * A 3-dimensional data structure containing three floats. The floats have no particular meaning; 
25
 * when this data structure is used in Interpolators, we can think of it as a 3-dimensional Point 
25
 * when this data structure is used in Dynamics, we can think of it as a 3-dimensional Point
26 26
 * a few of which the Dynamic interpolates between.
27 27
 */
28 28

  
......
120 120
    {
121 121
    return z;  
122 122
    }
123
  
124
///////////////////////////////////////////////////////////////////////////////////////////////////
125
// end of class   
123

  
126 124
  }
src/main/java/org/distorted/library/type/Static4D.java
126 126
    {
127 127
    return w;  
128 128
    }
129
  
130
///////////////////////////////////////////////////////////////////////////////////////////////////
131
// end of class   
129

  
132 130
  }
src/main/java/org/distorted/library/type/Static5D.java
132 132
    {
133 133
    return v;
134 134
    }
135
  
136
///////////////////////////////////////////////////////////////////////////////////////////////////
137
// end of class   
135

  
138 136
  }

Also available in: Unified diff