protected override bool IsReflexive(PropertyBasedSaveConfigToken token) { PngBitDepthUIChoices bitDepth = (PngBitDepthUIChoices)token.GetProperty <StaticListChoiceProperty>(PropertyNames.BitDepth).Value; // Only 32-bit is reflexive return(bitDepth == PngBitDepthUIChoices.Bpp32); }
internal override Set <SavableBitDepths> CreateAllowedBitDepthListFromToken(PropertyBasedSaveConfigToken token) { PngBitDepthUIChoices bitDepthFromToken = (PngBitDepthUIChoices)token.GetProperty <StaticListChoiceProperty>(PropertyNames.BitDepth).Value; Set <SavableBitDepths> bitDepths = new Set <SavableBitDepths>(); switch (bitDepthFromToken) { case PngBitDepthUIChoices.AutoDetect: bitDepths.AddRange(SavableBitDepths.Rgb24, SavableBitDepths.Rgb8, SavableBitDepths.Rgba32, SavableBitDepths.Rgba8); break; case PngBitDepthUIChoices.Bpp24: bitDepths.AddRange(SavableBitDepths.Rgb24); break; case PngBitDepthUIChoices.Bpp32: bitDepths.AddRange(SavableBitDepths.Rgba32); break; case PngBitDepthUIChoices.Bpp8: bitDepths.AddRange(SavableBitDepths.Rgb8, SavableBitDepths.Rgba8); break; default: throw new InvalidEnumArgumentException("bitDepthFromToken", (int)bitDepthFromToken, typeof(PngBitDepthUIChoices)); } return(bitDepths); }
protected override void OnSaveT(Document input, Stream output, PropertyBasedSaveConfigToken token, Surface scratchSurface, ProgressEventHandler progressCallback) { int quality = token.GetProperty <Int32Property>(PropertyNames.Quality).Value; ImageCodecInfo icf = GdiPlusFileType.GetImageCodecInfo(ImageFormat.Jpeg); EncoderParameters parms = new EncoderParameters(1); EncoderParameter parm = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); parms.Param[0] = parm; scratchSurface.Clear(ColorBgra.White); using (RenderArgs ra = new RenderArgs(scratchSurface)) { input.Render(ra, false); } using (Bitmap bitmap = scratchSurface.CreateAliasedBitmap()) { GdiPlusFileType.LoadProperties(bitmap, input); bitmap.Save(output, icf, parms); } }
internal override int GetDitherLevelFromToken(PropertyBasedSaveConfigToken token) { int ditherLevel = token.GetProperty <Int32Property>(PropertyNames.DitherLevel).Value; return(ditherLevel); }
internal override int GetThresholdFromToken(PropertyBasedSaveConfigToken token) { int threshold = token.GetProperty <Int32Property>(PropertyNames.Threshold).Value; return(threshold); }