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); }
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); } }
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); } }
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); }
/// <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; }
/// <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(); }
/// <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; } }
/// <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); }
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); } }
/// <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; }
/// <summary> /// 清空加载请求 /// </summary> /// <remarks>清空当前的加载请求(并不等于关闭加载窗口,只是用于清除前一个操作的请求)</remarks> public void clearRequestLoad() { loadingRequest = null; }
/// <summary> /// 请求结束加载 /// </summary> /// <remarks>在下一帧关闭加载窗口</remarks> public void requestLoadEnd() { loadingRequest = new LoadingRequest(false); }
/// <summary> /// 请求加载进度 /// </summary> /// <param name="progress">加载进度</param> public void requestLoadProgress(double progress = -1) { Debug.Log("requestLoadProgress: " + progress); loadingRequest = new LoadingRequest(progress); }
/// <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); }