Exemple #1
0
        public bool CanHandleRequest(TexImage image, IRequest request)
        {
            switch (request.Type)
            {
            case RequestType.Export:
            {
                string extension = Path.GetExtension(((ExportRequest)request).FilePath);
                return(extension.Equals(".dds") || extension.Equals(Extension));
            }

            case RequestType.ExportToParadox:
                return(true);

            case RequestType.Loading:     // Paradox can load dds file or his own format or a Paradox <see cref="Image"/> instance.
                LoadingRequest load = (LoadingRequest)request;
                if (load.Mode == LoadingRequest.LoadingMode.PdxImage)
                {
                    return(true);
                }
                else if (load.Mode == LoadingRequest.LoadingMode.FilePath)
                {
                    string extension = Path.GetExtension(load.FilePath);
                    return(extension.Equals(".dds") || extension.Equals(Extension));
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
        public bool CanHandleRequest(PixelFormat format, IRequest request)
        {
            switch (request.Type)
            {
            case RequestType.Export:
            {
                string extension = Path.GetExtension(((ExportRequest)request).FilePath);
                return(extension.Equals(".dds") || extension.Equals(Extension));
            }

            case RequestType.InvertYUpdate:
            case RequestType.ExportToStride:
                return(true);

            case RequestType.Loading:     // Stride can load dds file or his own format or a Stride <see cref="Image"/> instance.
                LoadingRequest load = (LoadingRequest)request;
                if (load.Mode == LoadingRequest.LoadingMode.SdImage)
                {
                    return(true);
                }
                else if (load.Mode == LoadingRequest.LoadingMode.FilePath)
                {
                    string extension = Path.GetExtension(load.FilePath);
                    return(extension.Equals(".dds") || extension.Equals(Extension));
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
Exemple #3
0
        public bool CanHandleRequest(TexImage image, IRequest request)
        {
            switch (request.Type)
            {
            case RequestType.Loading:
            {
                LoadingRequest    loader = (LoadingRequest)request;
                FREE_IMAGE_FORMAT format = FreeImage.GetFIFFromFilename(loader.FilePath);
                return(format != FREE_IMAGE_FORMAT.FIF_UNKNOWN && format != FREE_IMAGE_FORMAT.FIF_DDS);        // FreeImage can load DDS texture, but can't handle their mipmaps..
            }

            case RequestType.Export:
            {
                ExportRequest     export = (ExportRequest)request;
                FREE_IMAGE_FORMAT format = FreeImage.GetFIFFromFilename(export.FilePath);
                return(format != FREE_IMAGE_FORMAT.FIF_UNKNOWN && format != FREE_IMAGE_FORMAT.FIF_DDS);
            }

            case RequestType.Rescaling:
                RescalingRequest rescale = (RescalingRequest)request;
                return(rescale.Filter != Filter.Rescaling.Nearest);

            case RequestType.SwitchingChannels:
            case RequestType.GammaCorrection:
            case RequestType.Flipping:
            case RequestType.FlippingSub:
            case RequestType.Swapping:
                return(true);

            default:
                return(false);
            }
        }
Exemple #4
0
        public bool CanHandleRequest(TexImage image, IRequest request)
        {
            switch (request.Type)
            {
            case RequestType.Loading:
                LoadingRequest loader = (LoadingRequest)request;
                return(loader.Mode == LoadingRequest.LoadingMode.FilePath && Path.GetExtension(loader.FilePath).Equals(".dds"));

            case RequestType.Compressing:
                CompressingRequest compress = (CompressingRequest)request;
                return(SupportFormat(compress.Format) && SupportFormat(image.Format));

            case RequestType.Export:
                return(SupportFormat(image.Format) && Path.GetExtension(((ExportRequest)request).FilePath).Equals(".dds"));

            case RequestType.Rescaling:
                RescalingRequest rescale = (RescalingRequest)request;
                return(rescale.Filter == Filter.Rescaling.Box || rescale.Filter == Filter.Rescaling.Bicubic || rescale.Filter == Filter.Rescaling.Bicubic || rescale.Filter == Filter.Rescaling.Nearest);

            case RequestType.Decompressing:
                return(SupportFormat(image.Format));

            case RequestType.PreMultiplyAlpha:
            case RequestType.MipMapsGeneration:
            case RequestType.NormalMapGeneration:
                return(true);

            default:
                return(false);
            }
        }
Exemple #5
0
        public LoadingSaveResponse InsertLoadingDetails(JObject input)
        {
            LoadingSaveResponse objresponse = new LoadingSaveResponse();

            try
            {
                LoadingRequest objrequest = new LoadingRequest();

                objrequest.BookingIds         = Convert.ToString(input["BookingIds"]);
                objrequest.CounterId          = Convert.ToInt32(CommonMethods.URLKeyDecrypt(Convert.ToString(input["CounterId"])));
                objrequest.DriverAmount       = Convert.ToDecimal(input["DriverAmount"]);
                objrequest.DriverMobileNumber = Convert.ToString(input["DriverMobileNumber"]);
                objrequest.DriverName         = Convert.ToString(input["DriverName"]);
                objrequest.LoadingDateTime    = Convert.ToString(input["LoadingDateTime"]);
                objrequest.EstimatedDateTime  = Convert.ToString(input["EstimatedDateTime"]);
                objrequest.HamaliAmount       = Convert.ToDecimal(input["HamaliAmount"]);
                objrequest.Remarks            = Convert.ToString(input["Remarks"]);
                objrequest.UserLoginId        = Convert.ToInt32(CommonMethods.URLKeyDecrypt(Convert.ToString(input["UserLoginId"])));
                objrequest.VehicleNumber      = Convert.ToString(input["VehicleNumber"]);
                objrequest.Route = Convert.ToString(input["Route"]);

                objresponse = objBookingDal.InsertLoadingDetails(objrequest);
            }
            catch (Exception ex)
            {
                objresponse.StatusId      = 0;
                objresponse.StatusMessage = ex.Message;
            }
            return(objresponse);
        }
Exemple #6
0
        /// <summary>
        /// Loads the specified image.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="loader">The loader.</param>
        /// <exception cref="TextureToolsException">If loading failed : mostly not supported format or path error (FileNotFound).</exception>
        private void Load(TexImage image, LoadingRequest loader)
        {
            Log.Verbose("Loading " + loader.FilePath + " ...");

            FIBITMAP          temp;
            FREE_IMAGE_FORMAT fileFormat = FREE_IMAGE_FORMAT.FIF_UNKNOWN;

            try
            {
                temp = FreeImage.LoadEx(loader.FilePath, ref fileFormat);
                FreeImage.FlipVertical(temp);

                if (temp.IsNull)
                {
                    throw new Exception("FreeImage's image data is null");
                }
            }
            catch (Exception e)
            {
                Log.Error("Loading file " + loader.FilePath + " failed: " + e.Message);
                throw new TextureToolsException("Loading file " + loader.FilePath + " failed: " + e.Message);
            }

            // Converting the image into BGRA_8888 format
            var libraryData = new FreeImageTextureLibraryData {
                Bitmaps = new [] { FreeImage.ConvertTo32Bits(temp) }
            };

            image.LibraryData[this] = libraryData;
            int alphaSize = GetAlphaDepth(fileFormat, temp);

            FreeImage.Unload(temp);

            image.Data               = FreeImage.GetBits(libraryData.Bitmaps[0]);
            image.Width              = (int)FreeImage.GetWidth(libraryData.Bitmaps[0]);
            image.Height             = (int)FreeImage.GetHeight(libraryData.Bitmaps[0]);
            image.Depth              = 1;
            image.Dimension          = image.Height == 1 ? TexImage.TextureDimension.Texture1D : TexImage.TextureDimension.Texture2D;
            image.Format             = loader.LoadAsSRgb? PixelFormat.B8G8R8A8_UNorm_SRgb : PixelFormat.B8G8R8A8_UNorm;
            image.OriginalAlphaDepth = alphaSize;

            int rowPitch, slicePitch;

            Tools.ComputePitch(image.Format, image.Width, image.Height, out rowPitch, out slicePitch);
            image.RowPitch   = rowPitch;
            image.SlicePitch = slicePitch;

            //Only one image in the SubImageArray, FreeImage is only used to load images, not textures.
            image.SubImageArray[0].Data       = image.Data;
            image.SubImageArray[0].DataSize   = image.DataSize;
            image.SubImageArray[0].Width      = image.Width;
            image.SubImageArray[0].Height     = image.Height;
            image.SubImageArray[0].RowPitch   = rowPitch;
            image.SubImageArray[0].SlicePitch = slicePitch;
            image.DataSize         = (int)(FreeImage.GetDIBSize(libraryData.Bitmaps[0]) - GetHeaderSize()); // header size of a bitmap is included in their size calculus
            libraryData.Data       = IntPtr.Zero;
            image.DisposingLibrary = this;
        }
Exemple #7
0
        /// <summary>
        /// Loads the specified image.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="libraryData">The library data.</param>
        /// <param name="loader">The loader.</param>
        /// <exception cref="TextureToolsException">Loading dds file failed</exception>
        private void Load(TexImage image, DxtTextureLibraryData libraryData, LoadingRequest loader)
        {
            Log.Info("Loading " + loader.FilePath + " ...");

            libraryData             = new DxtTextureLibraryData();
            image.LibraryData[this] = libraryData;

            libraryData.Image    = new ScratchImage();
            libraryData.Metadata = new TexMetadata();
            HRESULT hr = Utilities.LoadDDSFile(loader.FilePath, DDS_FLAGS.DDS_FLAGS_NONE, out libraryData.Metadata, libraryData.Image);

            if (hr != HRESULT.S_OK)
            {
                Log.Error("Loading dds file " + loader.FilePath + " failed: " + hr);
                throw new TextureToolsException("Loading dds file " + loader.FilePath + " failed: " + hr);
            }

            libraryData.DxtImages = libraryData.Image.GetImages();

            // adapt the image format based on whether input image is sRGB or not
            var format = (PixelFormat)libraryData.Metadata.format;

            ChangeDxtImageType(libraryData, (DXGI_FORMAT)(loader.LoadAsSRgb ? format.ToSRgb() : format.ToNonSRgb()));

            image.DisposingLibrary = this;

            if (libraryData.Metadata.miscFlags == TEX_MISC_FLAG.TEX_MISC_TEXTURECUBE)
            {
                image.Dimension = TexImage.TextureDimension.TextureCube;
            }
            else
            {
                switch (libraryData.Metadata.dimension)
                {
                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE1D:
                    image.Dimension = TexImage.TextureDimension.Texture1D; break;

                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE2D:
                    image.Dimension = TexImage.TextureDimension.Texture2D; break;

                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE3D:
                    image.Dimension = TexImage.TextureDimension.Texture3D; break;
                }
            }

            UpdateImage(image, libraryData);

            var alphaSize = DDSHeader.GetAlphaDepth(loader.FilePath);

            image.OriginalAlphaDepth = alphaSize != -1 ? alphaSize : image.Format.AlphaSizeInBits();
        }
Exemple #8
0
        /// <summary>
        /// Loads the specified image.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="request">The request.</param>
        private void Load(TexImage image, LoadingRequest request)
        {
            Log.Verbose("Loading " + request.FilePath + " ...");

            var libraryData = new PvrTextureLibraryData();

            image.LibraryData[this] = libraryData;

            libraryData.Texture = new PVRTexture(request.FilePath);
            libraryData.Header  = libraryData.Texture.GetHeader();

            image.Width  = (int)libraryData.Header.GetWidth();
            image.Height = (int)libraryData.Header.GetHeight();
            image.Depth  = (int)libraryData.Header.GetDepth();

            var format = RetrieveFormatFromNativeData(libraryData.Header);

            image.Format             = request.LoadAsSRgb? format.ToSRgb(): format.ToNonSRgb();
            image.OriginalAlphaDepth = libraryData.Header.GetAlphaDepth();

            int pitch, slice;

            Tools.ComputePitch(image.Format, image.Width, image.Height, out pitch, out slice);
            image.RowPitch   = pitch;
            image.SlicePitch = slice;

            image.DisposingLibrary = this;

            UpdateImage(image, libraryData);

            if (image.FaceCount > 1 && image.FaceCount % 6 == 0)
            {
                image.Dimension = TexImage.TextureDimension.TextureCube;
            }
            else if (image.Depth > 1)
            {
                image.Dimension = TexImage.TextureDimension.Texture3D;
            }
            else if (image.Height > 0)
            {
                image.Dimension = TexImage.TextureDimension.Texture2D;
            }
            else
            {
                image.Dimension = TexImage.TextureDimension.Texture1D;
            }
        }
Exemple #9
0
        /// <summary>
        /// Loads the specified image.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="libraryData">The library data.</param>
        /// <param name="loader">The loader.</param>
        /// <exception cref="TexLibraryException">Loading dds file failed</exception>
        private void Load(TexImage image, DxtTextureLibraryData libraryData, LoadingRequest loader)
        {
            Log.Info("Loading " + loader.FilePath + " ...");

            libraryData             = new DxtTextureLibraryData();
            image.LibraryData[this] = libraryData;

            libraryData.Image    = new ScratchImage();
            libraryData.Metadata = new TexMetadata();
            HRESULT hr = Utilities.LoadDDSFile(loader.FilePath, DDS_FLAGS.DDS_FLAGS_NONE, out libraryData.Metadata, libraryData.Image);

            if (hr != HRESULT.S_OK)
            {
                Log.Error("Loading dds file " + loader.FilePath + " failed: " + hr);
                throw new TextureToolsException("Loading dds file " + loader.FilePath + " failed: " + hr);
            }

            libraryData.DxtImages = libraryData.Image.GetImages();

            image.DisposingLibrary = this;

            if (libraryData.Metadata.miscFlags == TEX_MISC_FLAG.TEX_MISC_TEXTURECUBE)
            {
                image.Dimension = TexImage.TextureDimension.TextureCube;
            }
            else
            {
                switch (libraryData.Metadata.dimension)
                {
                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE1D:
                    image.Dimension = TexImage.TextureDimension.Texture1D; break;

                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE2D:
                    image.Dimension = TexImage.TextureDimension.Texture2D; break;

                case TEX_DIMENSION.TEX_DIMENSION_TEXTURE3D:
                    image.Dimension = TexImage.TextureDimension.Texture3D; break;
                }
            }

            UpdateImage(image, libraryData);
        }
Exemple #10
0
        public bool CanHandleRequest(TexImage image, IRequest request)
        {
            switch (request.Type)
            {
            // Loading only file with a .pvr extension
            case RequestType.Loading:
                LoadingRequest loader = (LoadingRequest)request;
                return(loader.Mode == LoadingRequest.LoadingMode.FilePath && (Path.GetExtension(loader.FilePath).Equals(".pvr") || Path.GetExtension(loader.FilePath).Equals(".ktx")));

            case RequestType.Compressing:
                CompressingRequest compress = (CompressingRequest)request;
                return(SupportFormat(compress.Format) && SupportFormat(image.Format));

            case RequestType.Export:
                ExportRequest export = (ExportRequest)request;
                return(SupportFormat(image.Format) && (Path.GetExtension(export.FilePath).Equals(".pvr") || Path.GetExtension(export.FilePath).Equals(".ktx")));

            case RequestType.Decompressing:
                return(SupportFormat(image.Format));

            case RequestType.MipMapsGeneration:
                return(((MipMapsGenerationRequest)request).Filter != Filter.MipMapGeneration.Box);

            case RequestType.Rescaling:
                Filter.Rescaling filter = ((RescalingRequest)request).Filter;
                return(filter == Filter.Rescaling.Bicubic || filter == Filter.Rescaling.Bilinear || filter == Filter.Rescaling.Nearest);

            case RequestType.PreMultiplyAlpha:
            case RequestType.SwitchingChannels:
            case RequestType.Flipping:
            case RequestType.NormalMapGeneration:
                return(true);

            default:
                return(false);
            }
        }
Exemple #11
0
        /// <summary>
        /// Loads the specified image.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="request">The request.</param>
        private void Load(TexImage image, LoadingRequest request)
        {
            Log.Verbose("Loading Stride Image ...");

            var libraryData = new StrideTextureLibraryData();

            image.LibraryData[this] = libraryData;

            Image inputImage;

            if (request.Mode == LoadingRequest.LoadingMode.SdImage)
            {
                inputImage = request.SdImage;
            }
            else if (request.Mode == LoadingRequest.LoadingMode.FilePath)
            {
                using (var fileStream = new FileStream(request.FilePath, FileMode.Open, FileAccess.Read))
                    inputImage = Image.Load(fileStream);

                libraryData.SdImage = inputImage; // the image need to be disposed by the stride text library
            }
            else
            {
                throw new NotImplementedException();
            }

            var inputFormat = inputImage.Description.Format;

            image.Data        = inputImage.DataPointer;
            image.DataSize    = 0;
            image.Width       = inputImage.Description.Width;
            image.Height      = inputImage.Description.Height;
            image.Depth       = inputImage.Description.Depth;
            image.Format      = request.LoadAsSRgb ? inputFormat.ToSRgb() : inputFormat.ToNonSRgb();
            image.MipmapCount = request.KeepMipMap ? inputImage.Description.MipLevels : 1;
            image.ArraySize   = inputImage.Description.ArraySize;

            int rowPitch, slicePitch;

            Tools.ComputePitch(image.Format, image.Width, image.Height, out rowPitch, out slicePitch);
            image.RowPitch   = rowPitch;
            image.SlicePitch = slicePitch;

            var bufferStepFactor = request.KeepMipMap ? 1 : inputImage.Description.MipLevels;
            int imageCount       = inputImage.PixelBuffer.Count / bufferStepFactor;

            image.SubImageArray = new TexImage.SubImage[imageCount];

            for (int i = 0; i < imageCount; ++i)
            {
                image.SubImageArray[i]            = new TexImage.SubImage();
                image.SubImageArray[i].Data       = inputImage.PixelBuffer[i * bufferStepFactor].DataPointer;
                image.SubImageArray[i].DataSize   = inputImage.PixelBuffer[i * bufferStepFactor].BufferStride;
                image.SubImageArray[i].Width      = inputImage.PixelBuffer[i * bufferStepFactor].Width;
                image.SubImageArray[i].Height     = inputImage.PixelBuffer[i * bufferStepFactor].Height;
                image.SubImageArray[i].RowPitch   = inputImage.PixelBuffer[i * bufferStepFactor].RowStride;
                image.SubImageArray[i].SlicePitch = inputImage.PixelBuffer[i * bufferStepFactor].BufferStride;
                image.DataSize += image.SubImageArray[i].DataSize;
            }

            switch (inputImage.Description.Dimension)
            {
            case TextureDimension.Texture1D:
                image.Dimension = TexImage.TextureDimension.Texture1D; break;

            case TextureDimension.Texture2D:
                image.Dimension = TexImage.TextureDimension.Texture2D; break;

            case TextureDimension.Texture3D:
                image.Dimension = TexImage.TextureDimension.Texture3D; break;

            case TextureDimension.TextureCube:
                image.Dimension = TexImage.TextureDimension.TextureCube; break;
            }

            image.DisposingLibrary = this;
        }
Exemple #12
0
 /// <summary>
 /// 清空加载请求
 /// </summary>
 /// <remarks>清空当前的加载请求(并不等于关闭加载窗口,只是用于清除前一个操作的请求)</remarks>
 public void clearRequestLoad()
 {
     loadingRequest = null;
 }
Exemple #13
0
 /// <summary>
 /// 请求结束加载
 /// </summary>
 /// <remarks>在下一帧关闭加载窗口</remarks>
 public void requestLoadEnd()
 {
     loadingRequest = new LoadingRequest(false);
 }
Exemple #14
0
 /// <summary>
 /// 请求加载进度
 /// </summary>
 /// <param name="progress">加载进度</param>
 public void requestLoadProgress(double progress = -1)
 {
     Debug.Log("requestLoadProgress: " + progress);
     loadingRequest = new LoadingRequest(progress);
 }
Exemple #15
0
 /// <summary>
 /// 请求加载
 /// </summary>
 /// <remarks>在下一帧开启加载窗口</remarks>
 /// <example>例:
 /// <code>
 /// var gameSys = GameSystem.get();
 /// gameSys.requestLoadStart("等待中..."); // 将开启一个加载窗口
 /// </code>
 /// </example>
 /// <param name="text">等待文本</param>
 public void requestLoadStart(string text)
 {
     Debug.Log("requestLoadStart: " + text);
     loadingRequest = new LoadingRequest(text);
 }