Jump to content

I Like Pi

Members
  • Posts

    184
  • Joined

  • Last visited

Posts posted by I Like Pi

  1. I found myself in need of an ASCII art generator, but sabrown's and some online services didn't give me what I wanted. So I wrote my own. :)

    Compiled DLL:

    Put it in the FileTypes directory.

     

    Download >> AsciiArtFileType.zip

     

    asciiScreenshot.png

     

    Source Code:

    License: GNU General Public License (GPL) v3

    Download source code

     

     

    The right hand side shows the grayscale representation of the ASCII. To see the actual text, you have to complete the save and open the file with a text editor like Notepad.

    The horizontal and vertical cell sizes represent the number of pixels that go into one character. Since characters are usually taller than they are wide, you should set the vertical cell size to be higher than the horizontal cell size.

    Sample:

    FFFFFE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$E$$$$$$$EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FFFFE$$$$$$$$$$FF$$$$$$$$EE$$$$$$$$$$$$$$$$$$$$$$$$$$EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FFFE$$FLLF$$$$ELllLF$$$$$FLLLF$$$$FFEE$$$$$FE$$$$$$$$EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FFEEEFLlLE$$$FLlvvLE$$$$ELllL$$$$FLLLE$$$$$LlLLE$$$$ELLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FFE$$FLLLFE$$$ELlLFFE$$$$FlLLF$$$ELlLE$$$FFLllL$$$EFLllLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FE$$$EE$$$$$$$$FF$$$$$$$$EE$$$$$$$FFEE$$$$$LLLLF$$$FLlllLLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    E$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EE$$EFLLLLLLLLLlLLLLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    E$$E$$$$$$$$$E$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EFLLlllllllLlllllllLLLFEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    $$$LLFFE$$$$$LLFFF$$$$$FLFF$$$$$FFEE$$$$EFFFLLlvvvllllvvvvvvvlllLLFFEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EFLlllF$$$$FLlvvLE$$$$EFLLE$$$EFLllL$$$$FLLLllllllllllvvvvvvvvllLLFFEEE$$$EEEFFLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    $EFLllLE$$$EFlvllF$$$$EFlLF$$$EFLllL$$FLLLLLllllllllvllvvvvvlllLLLLFFEE$E$$EFFFFLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    $$EFE$EE$$$$$LL$EE$$$$$FF$E$$$$$FLFEFLLLLLLllllllvvvvvvvvvvvvlllLLLLLLLFFFEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EE$ELLFLLLlllllvvvvvvvvvvvvllllllvvvllllLLLFFLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EFLLLllLlllvv!!!!!;!!!!!!!!!!!!!vvvvvllllLLFLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FLEEE$$$$$ELFEEE$$$$$FFEE$$$$$LF$EFllLLLlvvv!!;;;;;;,,,,;;;;;;;!!!!!vvvvllllLLFFFFFEEFEEFFFFFFFFFFFFFFFFFFFFFFFFF
    llllF$$$$ELlvlL$$$$$$FLLE$$$EFllLFLlLLFlv!!!;;;;;,;,,,,,,,;;;;;;;!!!!vvvlllllLLFFFFEEEFFEFFFFFFFFFFFFFFFFFFFFFFFF
    llllF$$$EFLlvlLE$$$EFLLLE$$EFlvvFLLllFLv!!!!;;;;;,,,,,,,,,,;;;;;;;!!!vvvlllllLLFLFFFFEEFEEEFFFFFFFFFFFFFFFFFFFFFF
    FFEEFE$$$$ELLEFE$$$$$FLFE$$$$$LLFFLlLFv!!!;!;;;;,,,,,,,,,;,,;;;;;;!!!vvvvllllLLLFLFEEEEEE$$EFFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$$$$E$$$$$$$$$E$$$$$$$$EEFLFlLlv!!!!!;;;,,,,,,,,,,,,,,;;;;;!!!vvvvlllllLLLLLFEEEE$$E$EFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEFFLvllv!!!!!;;;,,,,,,,,,,,,,,;;;;;!!!vvvvlllllLLLLLFFEEEE$$$EFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$FF$$$$$$$$$E$$$$$$$$FEEFLFlvlvv!!!!!;;;;,,,,,,,,;;,,,,;;;;;!!!vvvlllllLlLLlLFEEEEE$$EFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$LllLLE$$$$$LLFE$$$$EllFFLLlvvv!!!!!;;;;;,,,,,,,,;;,,,,,;;;!!!!vvvlllllLlLLLFFFFEEEEEEFFFFFFFFFFFFFFFFFFFF
    $$$$$$FLlvvlF$$$$EFLLLE$$EFLvlEFLllvvv!!!!!!;;;;,,,,,,,;;;,,,,,,;;;!!!vvvlllllLlLLFFFEEEFEEEEFFFFFFFFFFFFFFFFFFFF
    $$$$$$$$FlLLLE$$$$ELLLF$$$$EllFFLllvvv!!!!!!;;;;,,,,,,;;;;;;;;;;!!!v!vvvllllllLLLLFFFFEEEFEEEFFFFFFFFFFFFFFFFFFFF
    F$$$$$$$EF$$$$$$$$$FE$$$$$$$FFFFLllvllv!!!!;;;;;;;;;!;!!!!;!;!!!vllllllLLLLLLLLLLLFFEFFEEEEEEFFFFFFFFFFFFFFFFFFFF
    lL$$$$$$$$$$$$$$$$$$$$$$$$$$$FFLlLlvllv!!!!!vv!!vvvlvvvvvv!!!vvvvllLLLLLLLLLLLLLLLLFEFEEEEEEFFFFFFFFFFFFFFFFFFFFF
    llLE$$$$$$$$$$$$$E$$$$$$$$$$$FFLLLvlllv!!!!vvvvllLlLllvvvvv!!vvlllLLLLllllllLLLLLLLLEEEEE$EFFFFFFFFFFFFFFFFFFFFFF
    llllF$$$$$$$$$$$ELFEF$$$$$$$$EFFFLllLlv!vvvvvvvvllLLLLlllv;;;vlLLLLlFLFFFFFLllllLlLLEE$$EFFFFFFFFFFFFFFFFFFFFFFFF
    lllllF$$$$$$$$EELllLF$$$$$$$$$EFFFllFl!!vvvv!vLLFLFFLLLlv!;,;!lLLllvvvlllllllllllLLLFE$EFLFLLFFFFFFFFFFFFFFFFFFFF
    llllllLE$$$$$$$EFllLF$$$$$$$$FlvLFFFFl!!!!!!lLlvvlvlvvv!!!;;;!llllvvv!!!!vlllvvvllLLLFEEFLFLLFFFFFFFFFFFFFFFFFFFF
    lllllllLF$$$$$$$ELFEE$$$$$$EFlllvlFEFl!!!;!!;;;;;!!vv!!;!!;;;vllllvvvvvvvvvvvvvvllLLLFFFFLLLFFFFFFFFFFFFFFFFFFFFF
    lllllllllF$$$$$$$$$$$$$$$$ELllvvllLFllv!!;;;;;;!!!!;;;;;;!;;;!lllllv!!!!!!!!vvvvllLLFFFFFLLLFFFFFFFFFFFFFFFFFFFFF
    llllllllllLE$$$$$$$$$$$$$Fllllv!vvlLLvvv!;;;;;;,;,,;;;;;;;;;;!vllllvv!!!;!;!!vvlllLLFFLLFFLLFFFFFFFFFFFFFFFFFFFFF
    lllllllllllLF$$$$$$$$$$$$ELllll!vvvLLlv!!;;;;;,,,,,,;;!!!!;,;!vlllllvv!!!!!!!vvlllLLFFLFFLLFFFFFFFFFFFFFFFFFFFFFF
    lllllllllllllF$$$$$$$$$$EEEFLlllv!lLvlvv!!!;;;,,,,;;!!;;;!!;;!vllvvlllvv!!!!!vvllLLLFFLFLLLFFFFFFFFFFFFFFFFFFFFFF
    llllllllllllllFE$$$$$E$$EEEEFlllv!vlvvlv!!!;;;,;;;!vv!!!;!!;!!vlllLLLlllvv!!vvlllLLLFFLLlLLFFFFFFFFFFFFFFFFFFFFFF
    LllllllllllllllLE$$EE$$EEEEEEFlllv!!vvll!!!!;;;;!!vv!!!vllvvvvlLFLLLLlllvvvvvvllLLLLFFLLLlLFFFFFFFFFFFFFFFFFFFFFF
    EFlllllllllllllllFEEE$EEEEEEEEFlll!!!vvlv!!!!!!!vvlv!!!!!!vvllLLLllLlllllllvvvllLLLLFFLLLLFFFFFFFFFFFFFFFFFFFFFFF
    EEFLllllllllllllllLEEEEEEEEEE$EFllv;!v!lv!v!!vvvvlv!!!!!!!!!vvvvvllllllllllvvvvllLLLLFFLLFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEFllllllllllllllLEE$$EEEE$$EEFLlv!!!lvvvvv!vvlv!v!!!!!!!!!!vvvvvllllLllvvv!vvlLlLLFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEFLlllllllllllllLEEEEEEE$$EEEELllllllvvvv!!vlvvvvvvvvvvvvvvvllLlLLFFFLlv!!vvlLlLLFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEEELlllllllllllllLFEEEEE$$EEEEELlllllvvvvv!!vvvlLLFLLlvlvllvLvllLFFLlll!!!vlLLlLFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEEEEFllllllllllllllFEEEE$$EEEEEEFlllllvvvv!!!!vv!!!vvvvvvvvvvvlllllllvv!!!vlLlLLFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEEE$EFLlllllllllllllFEEE$$EEEEEEEFLllllvvvv!!!!!!!!!!!!!!!!vvvvllllvvvv!!vlLLlLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEEEEEEELlllllllllllllFEE$$EEEEEEEEFllLllvvvvv!!!!!!!!!!vvvvvvvlllllvvvvvvlLLlLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEEEEEEE$EFlllllllllllllLEEEEEEEEEEEEFLllllvllvv!!!!!!!!!!vvvvvvvllllvvvvllLLlLLFFLEEEFFFFFFFFFFFFFFFFFFFFFFFFF
    EEEEE$EEEE$EEFLllllllllllllLE$EEEEEEEEEELlllLlvllvv!!!!!!!!!!!vvvvvvvvvvvvlLLLLlLFFLLl$$$EFFFFFFFFFFFFFFFFFFFFFFF
    FEEEE$EEE$$$$EFLllllllllllllFEEEEEEEEEE$ELllLLlvvvvv!!;;!!!!!!!!!!!vvvvvvllLLLLLFFFFlvvE$$$EFFFFFFFFFFFFFFFFFFFFF
    lLEEEEEEE$EEE$$ELllllllllllllLEEEEEEEEE$EELLLlllllvvv!!;;;!!!!!!!!!vvvvvllLLLLLFFFFL!!!l$$$$$EFFFFFFFFFFFFFFFFFFF
    llLFEEEEE$EEE$$EELllllllllllllLEEEEEEEE$EEELlllLLllllv!!!!!!!!!!!!!vvvlllLLLLLLFFFLv!!!l$$$$$$$EEFFFFFFFFFFFFFFFF
    llllFEEEEEEE$$$$$EFllllllllllllLEEEEEEEEEE$FllvlLLLLllvv!!!!!vv!!vvvvlllLLLLLLFLLL!;;;!l$$$$$$$$$$EEFFFFFFFFFFFFF
    lllllLEEEEEE$$$$$$EFllllllllllllLFEEEEEEEE$ELlllllllLLLllvvvvvvvvllllllLLLLLFFLLl;;;;;;L$$$$$$$$$$$$$EEFFFFFFFFFF
    llllllLFEEEEEEE$$$$EFlllllllllllllFEEEEEE$$$FLlllllllLLLLllllllllllLLLLLLFFFLLL!;;;;;;;E$$$$$$$$$$$$$$$$$$EEEFFFF
    llllllllLEEE$EEEE$$$EFlllllllllllllFEEEEE$$$EFLFl!llllllllLLLLLLLLLLLLFLFFLLLv,,,,;;;;v$$$$$$$$$$$$$$$$$$$$$$$$$E
    lllllllllLE$$EE$E$$$$EFlllllllllllvlFEEEE$$$EEE$L.vlllllllllllLLLLLLLLLFFLLl;,,,,,,,,;E$$$$$$$$$$$$$$$$$$$$$$$$$$
    llllllllllLFEEE$E$$$$$EFlllllllllllllLEEE$$$$$$$L, vlllllllllllllllLLLLLLl;,,,,,,,,,;l$$$$$$$$$$$$$$$$$$$$$$$$$$$
    llllllllllllFEEEE$$$$$$ELlllllllllllllLEE$$$$$$$L,. vlllllllllllllllLLll;....,,,,,,,;E$$$$$$$$$$$$$$$$$$$$$$$$$$$
    lllllllllllllLEE$$$$$$$$ELlllllllllllLF$$$$$$$$$L,,. !llllllllllllllLv;......,,,,,,,l$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    llllllllllllllLE$$$E$$$$EEFlllllllLE$$$$$$$$$$$$l,,.  ,vllllllllllll,    .....,,..,;E$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    FLlllllllllllllLFE$$$$$$E$EFlllLF$$$$$$$$$$$$$$Ev,,..  .!lllllllll;       .........FE$$$$$$$$$$$$$$$$$E$$$$$$$$$$
    EELlllllllllllllLFE$$$$$$$$EFF$$$$$$$$$$$$$$$$EE!,...    .!lllll!          .......;EEEE$$$$$$$$$$$$$$EE$$$EEEE$$$
    EEEFLllllllllllllLF$$$$E$$$$$$$$$$$$$$$$$$$$$$EF,,..      .;vlLLLv           .....FEEEE$$E$$EE$$$E$$$EEEE$$EEEEEE
    EEEEFLllllllllllllLF$$$$$$$$$$$$$$$$$$$$$$$$$EEl.,..     vLllv!vvlL!          .  !EEEEE$EE$EEEE$$EEEEEEEEE$EEEEEE
    EEEE$ELlllllllllllLE$$$$$$$$$$$$$$$$$$$$$$$$$EFv....   .lLLlLLLlvlvLL.          .EEEEEEEEEEEEEEEEEEEEEEEEEE$EEEEE
    EEEEEEEFLlllllLFE$$$$$$$$$$$$$$$$$$$$$$$$$$$EEF!...   ,LLll!!vlLLLllLL;         vEEEEEEEEEEEEEEEEEEEEEEEEEE$EEEEE
    EEEE$EEEFLlLF$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEL,..   ,lv!!LL!vvvLELl!!;,       ,EEEEEEEEEEEEEEEEEEEEEEEEEE$$$EEEE
    EEEEEEEE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEl...  ,!;,,,LLLLllllv;,.....     LEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEEEE
    EEEEE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEv.   ,;.  .;v!!LFFlv;,..        ,EEEEEEEEEEEEEEEEEEEEEE$$EEEEEEEEEE
    $EEE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEF!   ..     lvlLLLFL;,           FEEEEEEEEEEEEEEEEEEEE$$EEEEEEEEEEEE
    EEEE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEF;  .      ;llLlLlFF;.          !EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
    LEE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEL,  .     ,lFvlvlLFLv           FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
    lLF$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEL.       .vlv!v!LFLvv,         ;EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
    llL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEl        vLlv;lFELlv!L         FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
    llL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEv       ;Ll!!LLFlllvFl,       ;EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEE
    llL$$$$$$$$$$$$$$$$$$E$$$$$$$$$$$$$$$$$$$$EEE!       llvLlFvvvllFlv,       LEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEE
    llL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEE!      vLvlFl!!vvFFL!v;      ;EEEEEEEEEEEEEE;vLEEEEEEEEEEEEE$$$EEEEE
    lll$$$$$$$$$$$$$$$$$E$$$$$$$$$$$$$$$$$$$$$EEE!      LvLFvv!!vEFLv!vv      LEEEEEEEEEEEEEF,!!;LEEEEEEEEEE$$$EEEEEE
    llL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEv     ;vLFv!v!LlLvl!vlL     ,EEEEEEEEEEEEEEv..,..!$EEEEEEE$$$EEEEEEE
    llF$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEv     vLFl!!lLLvvvvvLlv     lEEEEEEEEEEEEEEll;.. F$$$EEEEE$$EEEEEEEE
    llE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEv    ;lFlv!LLl!vvllFvv!    .EEEEEEEEEEEEEEEEEEL!;FEEEEEEE$$EEEEEEEEE
    llE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEE!    lLlvlLFvv!vvEll!!!    !EEEEEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEEEEEEE
    Ll$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEEEv   .LvvLLL!!vvLLllv!vL    FEEEEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEEEEEEEE
    EF$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEE$v   ;vvLFvv!vlFll!v!llL   ,EEEEEEEEEEEEEEEEEEEEEEEEEEEE$EEEEEEEEEEEE
    EE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EEE$v   !vlFvvvvFll!v!llFvv   vEEEEEEEEEEEEEEEEEEEEEEEEEEE$EEEEEEEEEEEEE
    E$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EE$l.  lLFl!vlFLvv!vvFl!!v   EEEEEEEEEEEEEEEEEEEEEEEEEEE$$EEEEEEEEEEEEE
     
  2. For WriteLine, wrap the stream using StreamWriter sw = new StreamWriter(output).

    To convert to and from hex, invoke px.ToHexString() or uint.Parse(hex string, NumberStyles.HexNumber);

    To convert to and from binary, use bitwise operations:

    StreamWriter streamWriter = new StreamWriter(output);
    byte r = clr.R;
    for (int bit = 7; bit >= 0; bit--) {
       Console.Write(((r & (1 << bit)) == (1 << bit)) ? 1 : 0);
    }

  3. src\Effects\PixelateEffect.cs

    /////////////////////////////////////////////////////////////////////////////////
    // Paint.NET                                                                   //
    // Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors.     //
    // Portions Copyright (C) Microsoft Corporation. All Rights Reserved.          //
    // See src/Resources/Files/License.txt for full licensing and attribution      //
    // details.                                                                    //
    // .                                                                           //
    /////////////////////////////////////////////////////////////////////////////////
    
    using PaintDotNet.IndirectUI;
    using PaintDotNet.PropertySystem;
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    
    namespace PaintDotNet.Effects
    {
       [EffectTypeHint(EffectTypeHint.Fast)]
       public sealed class PixelateEffect 
           : PropertyBasedEffect
       {
           public static string StaticName
           {
               get
               {
                   return PdnResources.GetString("PixelateEffect.Name");
               }
           }
    
           public PixelateEffect() 
               : base(StaticName,
                      PdnResources.GetImageResource("Icons.PixelateEffect.png").Reference,
                      SubmenuNames.Distort,
                      EffectFlags.Configurable)
           {
           }
    
           public enum PropertyNames
           {
               CellSize
           }
    
           protected override PropertyCollection OnCreatePropertyCollection()
           {
               List props = new List();
    
               props.Add(new Int32Property(PropertyNames.CellSize, 2, 1, 100));
    
               return new PropertyCollection(props);
           }
    
           protected override ControlInfo OnCreateConfigUI(PropertyCollection props)
           {
               ControlInfo configUI = CreateDefaultConfigUI(props);
    
               configUI.SetPropertyControlValue(PropertyNames.CellSize, ControlInfoPropertyNames.DisplayName, PdnResources.GetString("PixelateEffect.ConfigDialog.SliderLabel"));
               // TODO: units label?
               //aecg.SliderUnitsName = PdnResources.GetString("PixelateEffect.ConfigDialog.SliderUnitsName");
    
               return configUI;
           }
    
           private ColorBgra ComputeCellColor(int x, int y, RenderArgs src, int cellSize)
           {
               Rectangle cell = GetCellBox(x, y, cellSize);
               cell.Intersect(src.Bounds);
    
               int left = cell.Left;
               int right = cell.Right - 1;
               int bottom = cell.Bottom - 1;
               int top = cell.Top;
    
               ColorBgra colorTopLeft = src.Surface[left, top];
               ColorBgra colorTopRight = src.Surface[right, top];
               ColorBgra colorBottomLeft = src.Surface[left, bottom];
               ColorBgra colorBottomRight = src.Surface[right, bottom];
    
               ColorBgra c = ColorBgra.BlendColors4W16IP(colorTopLeft, 16384, colorTopRight, 16384, colorBottomLeft, 16384, colorBottomRight, 16384);
    
               return c;
           }
    
           private Rectangle GetCellBox(int x, int y, int cellSize)
           {
               int widthBoxNum = x % cellSize;
               int heightBoxNum = y % cellSize;
               Point leftUpper = new Point(x - widthBoxNum, y - heightBoxNum);
               Rectangle returnMe = new Rectangle(leftUpper, new Size(cellSize, cellSize));
               return returnMe;
           }
    
           private int cellSize;
           protected override void OnSetRenderInfo(PropertyBasedEffectConfigToken newToken, RenderArgs dstArgs, RenderArgs srcArgs)
           {
               this.cellSize = newToken.GetProperty(PropertyNames.CellSize).Value;
               base.OnSetRenderInfo(newToken, dstArgs, srcArgs);
           }
    
           protected unsafe override void OnRender(Rectangle[] rois, int startIndex, int length)
           {
               for (int i = startIndex; i < startIndex + length; ++i)
               {
                   Rectangle rect = rois[i];
    
                   for (int y = rect.Top; y < rect.Bottom; ++y)
                   {
                       int yEnd = y + 1;
    
                       for (int x = rect.Left; x < rect.Right; ++x)
                       {
                           Rectangle cellRect = GetCellBox(x, y, this.cellSize);
                           cellRect.Intersect(DstArgs.Bounds);
                           ColorBgra color = ComputeCellColor(x, y, SrcArgs, this.cellSize);
    
                           int xEnd = Math.Min(rect.Right, cellRect.Right);
                           yEnd = Math.Min(rect.Bottom, cellRect.Bottom);
    
                           for (int y2 = y; y2 < yEnd; ++y2)
                           {
                               ColorBgra *ptr = DstArgs.Surface.GetPointAddressUnchecked(x, y2);
    
                               for (int x2 = x; x2 < xEnd; ++x2)
                               {
                                   ptr->Bgra = color.Bgra;
                                   ++ptr;
                               }
                           }
    
                           x = xEnd - 1;
                       }
    
                       y = yEnd - 1;
                   }
               }
           }
       }
    }

  4. They probably use optical zoom and refocus the lenses. Optical zoom works by bending the light that reaches the camera, so the image stays sharp. Digital zoom works with pixels, so to zoom in, the computer has to create more pixels by analyzing the existing pixels. Computers cannot create extra detail that didn't already exist, so you cannot increase the quality of a digitally zoomed image with any program.

×
×
  • Create New...