Exemple #1
0
 /// <summary>
 ///     Creates a new Queue entry
 /// </summary>
 /// <param name="textureOrRef">TTextureType or CTextureRef</param>
 /// <param name="action"></param>
 /// <param name="dataSize">Size of data</param>
 /// <param name="data">Texture data</param>
 public STextureQueue(object textureOrRef, EQueueAction action, Size dataSize, byte[] data)
 {
     TextureOrRef = textureOrRef;
     Action       = action;
     DataSize     = dataSize;
     Data         = data;
 }
Exemple #2
0
 /// <summary>
 ///     Creates a new Queue entry
 /// </summary>
 /// <param name="textureOrRef">TTextureType or CTextureRef</param>
 /// <param name="action"></param>
 /// <param name="data">Texture data as a bitmap</param>
 public STextureQueue(object textureOrRef, EQueueAction action, Bitmap data)
 {
     TextureOrRef = textureOrRef;
     Action       = action;
     Data         = data;
     DataSize     = new Size();
 }
Exemple #3
0
        /// <summary>
        ///     Helper function to resize a bitmap and enqueue it
        /// </summary>
        /// <param name="texture"></param>
        /// <param name="bmp"></param>
        /// <param name="action"></param>
        private void _ResizeTextureAndEnqueue(object texture, Bitmap bmp, EQueueAction action)
        {
            Bitmap bmp2 = bmp.Resize(_GetNewTextureSize(bmp.Size));

            bmp.Dispose();
            lock (_TextureQueue)
            {
                _TextureQueue.Enqueue(new STextureQueue(texture, action, bmp2));
            }
        }
Exemple #4
0
 /// <summary>
 ///     Enqueues a bitmap to add or update the texture
 /// </summary>
 /// <param name="texture">TTextureType (Add) or CTextureRef(Update)</param>
 /// <param name="bmp"></param>
 /// <param name="action"></param>
 /// <param name="asyncResize">True if resizing should be done in an extra thread</param>
 private void _EnqueueTextureAddOrUpdate(Object texture, Bitmap bmp, EQueueAction action, bool asyncResize)
 {
     Debug.Assert(action == EQueueAction.Add || action == EQueueAction.Update);
     Debug.Assert(action != EQueueAction.Add || texture is TTextureType);
     Debug.Assert(action != EQueueAction.Update || texture is CTextureRef);
     if (_RequiresResize(bmp.GetSize()))
     {
         if (asyncResize)
         {
             Task.Factory.StartNew(() => _ResizeTextureAndEnqueue(texture, bmp, action));
         }
         else
         {
             _ResizeTextureAndEnqueue(texture, bmp, action);
         }
     }
     else
     {
         lock (_TextureQueue)
         {
             _TextureQueue.Enqueue(new STextureQueue(texture, action, bmp));
         }
     }
 }