[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n\n# Standard to msysgit\n*.doc\t diff=astextplain\n*.DOC\t diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot  diff=astextplain\n*.DOT  diff=astextplain\n*.pdf  diff=astextplain\n*.PDF\t diff=astextplain\n*.rtf\t diff=astextplain\n*.RTF\t diff=astextplain\n"
  },
  {
    "path": ".gitignore",
    "content": "# Windows image file caches\nThumbs.db\nehthumbs.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n# =========================\n# Operating System Files\n# =========================\n\n# OSX\n# =========================\n\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n"
  },
  {
    "path": "README.md",
    "content": "# ZPhotoEngine\nZPhotoEngine is a special image processing library for free. It has a lot of features like photoshop.\n"
  },
  {
    "path": "ZPHOTOENGINE/Linux/ZPhotoEngine.h",
    "content": "/*****************************************************************************\nCopyright:    Trent\nFile name:    ZPhotoEngine.h\nDescription:  ZPHOTO ENGINE LIBRARY FOR IMAGE PROCESSING LIKE PS\nAuthor:       Trent\nVersion:      V3.6\nDate:         2017-08-17\nMail:         dongtingyueh@163.com\n*****************************************************************************/\n\n#ifndef __T_PHOTOENGINE__\n#define __T_PHOTOENGINE__\n\n//////////////////////////////////////////////////////////////////////////////\n//ͼģʽ\nconst int BLEND_MODE_DARKEN                                       =  1;\nconst int BLEND_MODE_MULTIPLY                                     =  2;\nconst int BLEND_MODE_COLORBURN                                    =  3;\nconst int BLEND_MODE_LINEARBURN                                   =  4;\nconst int BLEND_MODE_DARKNESS                                     =  5;\nconst int BLEND_MODE_LIGHTEN                                      =  6;\nconst int BLEND_MODE_SCREEN                                       =  7;\nconst int BLEND_MODE_COLORDODGE                                   =  8;\nconst int BLEND_MODE_COLORLINEARDODGE                             =  9;\nconst int BLEND_MODE_LIGHTCOLOR                                   =  10;\nconst int BLEND_MODE_OVERLAY                                      =  11;\nconst int BLEND_MODE_SOFTLIGHT                                    =  12;\nconst int BLEND_MODE_HARDLIGHT                                    =  13;\nconst int BLEND_MODE_VIVIDLIGHT                                   =  14;\nconst int BLEND_MODE_LINEARLIGHT                                  =  15;\nconst int BLEND_MODE_PINLIGHT                                     =  16;\nconst int BLEND_MODE_SOLIDCOLORMIXING                             =  17;\nconst int BLEND_MODE_DIFFERENCE                                   =  18;\nconst int BLEND_MODE_EXCLUSION                                    =  19;\nconst int BLEND_MODE_SUBTRACTION                                  =  20;\nconst int BLEND_MODE_DIVIDE                                       =  21;\n///////////////////////////////////////////////////////////////////////////////\n#ifdef _MSC_VER\n\n#ifdef __cplusplus\n#define EXPORT extern \"C\" _declspec(dllexport)\n#else\n#define EXPORT __declspec(dllexport)\n#endif\n\n    //\n\t/*************************************************\n\tFunction:    ZPHOTO_Saturation\n\tDescription: Ͷȵ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t saturation-ͶֵΧ[0,512]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\t/*************************************************\n\tFunction:    ZPHOTO_Posterize\n\tDescription: ɫ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t clusterNum-ɫΧ[2,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\t/*************************************************\n\tFunction:    ZPHOTO_OverExposure\n\tDescription: ع.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);//ع\n\t/*************************************************\n\tFunction:    ZPHOTO_Lightness    \n\tDescription: ȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t lightness-ֵΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);//ȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Invert\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);//\n\t/*************************************************\n\tFunction:    ZPHOTO_HueAndSaturation\n\tDescription: ɫ౥Ͷȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t hue-ɫֵΧ[-180,180]\n\t\t\t\t saturation-ͶֵΧΪ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);//ɫ౥Ͷȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_HistagramEqualize\n\tDescription: ɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);//ɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Desaturate\n\tDescription: ȥɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ȥɫ̶ȣ[0-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);//ȥɫ\n   /*************************************************\n\tFunction:    ZPHOTO_Curve\n\tDescription: ߵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t knotsPos-XY飺ʼ+м+ĩβ㣬һspline\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_CurveLevel\n\tDescription: ɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t inputLeftLimit-СֵΧ[0,255]\n\t\t\t\t inputMiddle-мֵΧ[0,9.99]\n\t\t\t\t inputRightLimit-ֵΧ[0,255]\n\t\t\t\t outputLeftLimit-СֵΧ[0,255]\n\t\t\t\t outputRightLimit-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);//ɫ׵\n\t/*************************************************\n\tFunction:    ZPHOTO_NLinearBrightContrastAdjust\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-255,255]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_LinearBrightContrast\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-100,100]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Blackwhite\n\tDescription: ڰ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t kRed-ɫ,Χ[-200,300]\n\t\t\t\t kGreen-ɫ,Χ[-200,300]\n\t\t\t\t kBlue-ɫ,Χ[-200,300]\n\t\t\t\t kYellow-ɫ,Χ[-200,300]\n\t\t\t\t kCyan-ɫ,Χ[-200,300]\n\t\t\t\t kMagenta-,Χ[-200,300]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);//ڰ\n\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrast\n\tDescription: ԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrastAdjustWithParameters\n\tDescription: ƵԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradation\n\tDescription: Զɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradationAdjustWithParameters\n\tDescription: ƵԶɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Threshold\n\tDescription: ֵ(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);//ֵ\n\t/*************************************************\n\tFunction:    ZPHOTO_ChannelMixProcess\n\tDescription: ͨ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t channel-Red-0,Green-1,Blue-2,Gray-3\n\t\t\t\t kr-RedͨΧ[-200,200]\n\t\t\t\t kg-GreenͨΧ[-200,200]\n\t\t\t\t kb-BlueͨΧ[-200,200]\n\t\t\t\t N-ڱΧ[-200,200]\n\t\t\t\t singleColor-Ƿɫɫ-trueɫ-false\n\t\t\t\t constAdjust-Ƿִгڣ-true,-false\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastestGaussFilter\n\tDescription: ٸ˹ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);//˹˲\n\t/*************************************************\n\tFunction:    ZPHOTO_HighPass\n\tDescription: ߷\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);//߷\n\t/*************************************************\n\tFunction:    ZPHOTO_USM\n\tDescription: USM\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹뾶ΧΪ[0,1000]\n\t\t\t\t amount-񻯳̶ȣΧΪ[0,500]\n\t\t\t\t threshold-ֵΧΪ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\t/*************************************************\n\tFunction:    ZPHOTO_FindEdges\n\tDescription: ұԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);//ұԵ\n\t/////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //ͼϹ\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarken\n\tDescription: 䰵ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeMultiply\n\tDescription: Ƭģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorBurn\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearBurn\n\tDescription: Խģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarkness\n\tDescription: ɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLighten\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeScreen\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorDodge\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorLinearDodge\n\tDescription: ɫԼģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLightColor\n\tDescription: ǳɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeOverlay\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSoftLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeHardLight\n\tDescription: ǿģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeVividLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearLight\n\tDescription: Թģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModePinLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSolidColorMixing\n\tDescription: ʵɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDifference\n\tDescription: ֵģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeExclusion\n\tDescription: ųģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSubtraction\n\tDescription: ȥģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDivide\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDesaturate\n\tDescription: ȥɫ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorInvert\n\tDescription: \n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageBlendEffect\n\tDescription: ͼ\n\tInput:       baseData-ͼͼBufferʽΪ32λBGRA\n\t             width-ͼ\n\t\t\t\t height-ͼ߶\n\t\t\t\t stride-ͼStride\n\t\t\t\t mixData-ͼͼBufferСͼͼһ\n\t\t\t\t blendMode-ͼģʽ\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);\n    /////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //չ\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorTemperature\n\tDescription: ɫµ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɫǿȣΧ[-50,50]intensity < 0ɫintensity = 0,ԭͼintensity > 0ůɫ\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Shadow \n\tDescription: Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ӰǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Shadow(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Highlight\n\tDescription: ߹\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--߹ǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Highlight(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_HighlightShadowPrecise\n\tDescription: ߹Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t highlight--߹ǿֵȡֵΧΪ[-200,100]\n\t\t\t\t shadow-ӰǿֵȡֵΧΪ[-200,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\t/*************************************************\n\tFunction:    ZPHOTO_Exposure\n\tDescription: ع\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--عǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_CalcWH\n\tDescription: ͼ任֮Ŀ߼任HýӿZPHOTO_ImageTransformation       \n\tInput:\t     inputImgSize--ͼϢ\n\t\t\t\t angle--תǶֵȡֵΧΪ[-360-360]\n\t\t\t\t scale--ű任ֵȡֵ0\n\t\t\t\t transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\t\t\t\t outputImgSize--ͼϢ\n\t\t\t\t H--任飬Ϊ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageTransformation\n\tDescription: ͼ任\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             srcImgSize--ԭʼͼϢ\n                 dstData--ͼBufferСɽӿZPHOTO_CalcWH\n\t\t\t\t dstImgSize--ĿͼϢ\n\t\t\t\t H--任飬Ϊ6\n\t\t\t\t Interpolation_method--ֵѡinterpolation_bilinear,interpolation_nearest\n\t\t\t\t Transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastMeanFilter\n\tDescription: ֵģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius--ֵ˲뾶ȡֵΧΪ[0,width / 2]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_SobelFilter\n\tDescription: SobelԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\n\t//For Android Development\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBA2BGRA\n\tDescription: RGBAʽתBGRAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_BGRA2RGBA\n\tDescription: BGRAʽתRGBAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_Fragment\n\tDescription: Ƭ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_MotionBlur\n\tDescription: ˶ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-˶ģǶֵȡֵΧΪ[0,360]\n\t\t\t\t distance-˶ģֵȡֵΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\t/*************************************************\n\tFunction:    ZPHOTO_SurfaceBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ģֵֵȡֵΧΪ[0,255]\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,10]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_RadialBlur\n\tDescription: תģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ѡģX\n\t\t\t\t cenY-תģY\n\t\t\t\t amount-תģ̶ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_ZoomBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ģX\n\t\t\t\t cenY-ģY\n\t\t\t\t sampleRadius-ģ뾶ΧΪ[0-255]\n\t\t\t\t amount-ģ̶,ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Relief\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶   \n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-ǶȣΧΪ[0-360]\n\t\t\t\t amount-̶,ΧΪ[0-500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mean\n\tDescription: ƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mosaic\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-Mosaic뾶,ΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mosaic(unsigned char* srcData, int width, int height, int stride, int size);\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorBalance\n\tDescription: ɫƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cyan-ɫΧΪ[-100,100]\n\t\t\t\t magenta-죬ΧΪ[-100,100]\n\t\t\t\t yellow-ɫΧΪ[-100,100]\n\t\t\t\t channel-ͨѡRGB-0,R-1,G-2,B-3\n\t\t\t\t preserveLuminosity-true:ȣfalse:\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Diffusion\n\tDescription: ɢ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɢ̶ȣΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_LSNBlur\n\tDescription: LSNBlur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-LSNBlur뾶ΧΪ[0,200]\n\t\t\t\t delta-[0,500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\t/*************************************************\n\tFunction:    ZPHOTO_MedianFilter\n\tDescription: ֵ˲(мɫ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride,int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MaxFilter\n\tDescription: ֵ˲(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MinFilter\n\tDescription: Сֵ˲(Сֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_GlowingEdges\n\tDescription: Ե˾\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t edgeSize-ԵֵȡֵΧΪ[1,14]\n\t\t\t\t edgeLightness-ԵֵȡֵΧΪ[0,20]\n\t\t\t\t edgeSmoothness-ƽȣȡֵΧΪ[1,15]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageWarpWave\n\tDescription: Wave \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-γ̶ȣΧ[0, 100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToYCbCr\n\tDescription: RGBתYCbCr\n\tInput:       Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n\tEXPORT void ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\t/*************************************************\n\tFunction:    ZPHOTO_YCbCrToRGB\n\tDescription: YCbCrתRGB\t   \n\tInput: \t     Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToLab\n\tDescription: RGBתLAB\t   \n\tInput:    \t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\t/*************************************************\n\tFunction:    ZPHOTO_LabToRGB\n\tDescription: LABתRGB\t   \n\tInput:    \t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_GammaCorrect\n\tDescription: Gamma\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-GammaΧ[1,50]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\n    /******************************************************************************* \n    * Function Name  : Natural Saturation \n    * Description    : ȻͶ\n    * Input  srcData : image data\n    * Input  width   : image width\n    * Input  height  : image height\n    * Input  stride  : image stride\n    * Input  saturation     : saturation value to adjust from -100 to 100\n    * Output         : None \n    * Return         : 0-success, others failed\n    *******************************************************************************/\n\tEXPORT int ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tEXPORT int ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n/****************************************************Update***************************************************\n****************************************************Date:2018-06-21*******************************************\nContent:\nSmart blur filter\nAnisotropic Filter\n*************************************************************************************************************/\n/*************************************************\n\tFunction:    ZPHOTO_SmartBlurFilter\n\tDescription: Smart Blur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-ģ뾶ֵȡֵΧΪ[0,100]\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n/*************************************************\n\tFunction:    ZPHOTO_AnisotropicFilter\n\tDescription: Anisotropic Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t iter-ȡֵΧΪ[0,100]\n\t\t\t\t k-ɢϵΧ[0,]\n\t\t\t\t lambda-[0,0.35],default 0.25\n\t\t\t\t offset-[0,10],default 3\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n/*************************************************\n\tFunction:    ZPHOTO_DisplacementFilter\n\tDescription: Displacement Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t maskData-ûͼʽΪ32λBGRAʽ\n\t\t\t\t mWidth-ûͼ\n\t\t\t\t mHeight-ûͼ߶\n\t\t\t\t mStride-ûͼStride\n\t\t\t\t hRatio-ˮƽΧ[-100,100]\n\t\t\t\t vRatio-ֱΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n/*************************************************\n\tFunction:    ZPHOTO_NoiseEffect\n\tDescription: Noise effect\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ͼĻϱΧ[0,100]\n\t\t\t\t sigma-Χ[0,]\n\t\t\t\t phase-ȣΧ[0,]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\nEXPORT int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#else\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif    \n\t//\n\tint ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n    int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\tint ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);\n\tint ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);\n\tint ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);\n\tint ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);\n    int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\tint ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);\n\tint ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);\n    int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);\n    int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\n\tint ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);\n\tint ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);\n\tint ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\tint ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\tint ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\tint ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\n\t//V1.2\n\tint ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\tint ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\tint ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\tint ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\tint ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\tint ZPHOTO_Mosaic(unsigned char *srcData, int width, int height, int stride, int size);\n\tint ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\tint ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t\n\tvoid ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\tvoid ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\tvoid ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\tvoid ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t///ͼϹ\n\tint ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\tint ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\tint ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);//ͼ\n\n\t//չ\n\tint ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);\n\tint ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\tint ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n    int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\tint ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\tint ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\tint ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n    //For Android Development\n    int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n    int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\tint ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\tint ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\tint ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n\tint ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n\tint ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n\tint ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n    int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif\n\n\n\n#endif\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/AnisotropicFilterForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class AnisotropicFilterForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 13;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(6, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 59;\n            this.skinHScrollBar2.Minimum = 2;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 10;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(23, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"K：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"10\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 19;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 7;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"Iter：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"7\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // AnisotropicFilterForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.Name = \"AnisotropicFilterForm\";\n            this.Text = \"AnisotropicFilterForm\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/AnisotropicFilterForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class AnisotropicFilterForm : CCWin.Skin_Mac\n    {\n        public AnisotropicFilterForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.AnisotropicFilter(curBitmap, iter, k);\n            }\n\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int iter = 7;\n        private int k = 10;\n        public int getIter\n        {\n            get { return iter; }\n        }\n        public int getK\n        {\n            get { return k; }\n        }\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                k = skinHScrollBar2.Value;\n                iter = skinHScrollBar1.Value;\n                textBox1.Text = iter.ToString();\n                textBox2.Text = k.ToString();\n                pictureBox1.Image = (Image)zPhoto.AnisotropicFilter(curBitmap, iter, k);\n            }\n\n        }\n\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                k = skinHScrollBar2.Value;\n                iter = skinHScrollBar1.Value;\n                textBox1.Text = iter.ToString();\n                textBox2.Text = k.ToString();\n                pictureBox1.Image = (Image)zPhoto.AnisotropicFilter(curBitmap, iter, k);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            k = skinHScrollBar2.Value;\n            iter = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/AnisotropicFilterForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BlackWhiteForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class BlackWhiteForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.label15 = new System.Windows.Forms.Label();\n            this.comboBox1 = new System.Windows.Forms.ComboBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.button8 = new System.Windows.Forms.Button();\n            this.label13 = new System.Windows.Forms.Label();\n            this.textBox6 = new System.Windows.Forms.TextBox();\n            this.hScrollBar6 = new System.Windows.Forms.HScrollBar();\n            this.label14 = new System.Windows.Forms.Label();\n            this.button7 = new System.Windows.Forms.Button();\n            this.label11 = new System.Windows.Forms.Label();\n            this.textBox5 = new System.Windows.Forms.TextBox();\n            this.hScrollBar5 = new System.Windows.Forms.HScrollBar();\n            this.label12 = new System.Windows.Forms.Label();\n            this.button6 = new System.Windows.Forms.Button();\n            this.label9 = new System.Windows.Forms.Label();\n            this.textBox4 = new System.Windows.Forms.TextBox();\n            this.hScrollBar4 = new System.Windows.Forms.HScrollBar();\n            this.label10 = new System.Windows.Forms.Label();\n            this.button5 = new System.Windows.Forms.Button();\n            this.label7 = new System.Windows.Forms.Label();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.hScrollBar3 = new System.Windows.Forms.HScrollBar();\n            this.label8 = new System.Windows.Forms.Label();\n            this.button4 = new System.Windows.Forms.Button();\n            this.label5 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.hScrollBar2 = new System.Windows.Forms.HScrollBar();\n            this.label6 = new System.Windows.Forms.Label();\n            this.button3 = new System.Windows.Forms.Button();\n            this.label3 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.hScrollBar1 = new System.Windows.Forms.HScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.groupBox1.SuspendLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.SuspendLayout();\n            // \n            // label15\n            // \n            this.label15.AutoSize = true;\n            this.label15.Location = new System.Drawing.Point(6, 47);\n            this.label15.Name = \"label15\";\n            this.label15.Size = new System.Drawing.Size(53, 12);\n            this.label15.TabIndex = 72;\n            this.label15.Text = \"预设(E:)\";\n            // \n            // comboBox1\n            // \n            this.comboBox1.FormattingEnabled = true;\n            this.comboBox1.Items.AddRange(new object[] {\n            \"默认值\",\n            \"蓝色滤镜\",\n            \"较暗\",\n            \"绿色滤镜\",\n            \"高对比度蓝色滤镜\",\n            \"高对比度红色滤镜\",\n            \"红外线\",\n            \"较亮\",\n            \"最黑\",\n            \"最白\",\n            \"中灰密度\",\n            \"红色滤镜\",\n            \"黄色滤镜\"});\n            this.comboBox1.Location = new System.Drawing.Point(65, 44);\n            this.comboBox1.Name = \"comboBox1\";\n            this.comboBox1.Size = new System.Drawing.Size(177, 20);\n            this.comboBox1.TabIndex = 71;\n            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged_1);\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.button8);\n            this.groupBox1.Controls.Add(this.label13);\n            this.groupBox1.Controls.Add(this.textBox6);\n            this.groupBox1.Controls.Add(this.hScrollBar6);\n            this.groupBox1.Controls.Add(this.label14);\n            this.groupBox1.Controls.Add(this.button7);\n            this.groupBox1.Controls.Add(this.label11);\n            this.groupBox1.Controls.Add(this.textBox5);\n            this.groupBox1.Controls.Add(this.hScrollBar5);\n            this.groupBox1.Controls.Add(this.label12);\n            this.groupBox1.Controls.Add(this.button6);\n            this.groupBox1.Controls.Add(this.label9);\n            this.groupBox1.Controls.Add(this.textBox4);\n            this.groupBox1.Controls.Add(this.hScrollBar4);\n            this.groupBox1.Controls.Add(this.label10);\n            this.groupBox1.Controls.Add(this.button5);\n            this.groupBox1.Controls.Add(this.label7);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.hScrollBar3);\n            this.groupBox1.Controls.Add(this.label8);\n            this.groupBox1.Controls.Add(this.button4);\n            this.groupBox1.Controls.Add(this.label5);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.hScrollBar2);\n            this.groupBox1.Controls.Add(this.label6);\n            this.groupBox1.Controls.Add(this.button3);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.hScrollBar1);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Location = new System.Drawing.Point(7, 78);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(256, 362);\n            this.groupBox1.TabIndex = 70;\n            this.groupBox1.TabStop = false;\n            this.groupBox1.Text = \"黑白\";\n            // \n            // button8\n            // \n            this.button8.BackColor = System.Drawing.Color.Magenta;\n            this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button8.Location = new System.Drawing.Point(147, 295);\n            this.button8.Name = \"button8\";\n            this.button8.Size = new System.Drawing.Size(20, 20);\n            this.button8.TabIndex = 67;\n            this.button8.UseVisualStyleBackColor = false;\n            // \n            // label13\n            // \n            this.label13.AutoSize = true;\n            this.label13.Location = new System.Drawing.Point(239, 297);\n            this.label13.Name = \"label13\";\n            this.label13.Size = new System.Drawing.Size(11, 12);\n            this.label13.TabIndex = 66;\n            this.label13.Text = \"%\";\n            this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox6\n            // \n            this.textBox6.Location = new System.Drawing.Point(173, 294);\n            this.textBox6.Name = \"textBox6\";\n            this.textBox6.Size = new System.Drawing.Size(60, 21);\n            this.textBox6.TabIndex = 65;\n            this.textBox6.Text = \"80\";\n            this.textBox6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar6\n            // \n            this.hScrollBar6.Location = new System.Drawing.Point(8, 323);\n            this.hScrollBar6.Maximum = 309;\n            this.hScrollBar6.Minimum = -200;\n            this.hScrollBar6.Name = \"hScrollBar6\";\n            this.hScrollBar6.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar6.TabIndex = 64;\n            this.hScrollBar6.Value = 80;\n            this.hScrollBar6.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar6_Scroll_1);\n            // \n            // label14\n            // \n            this.label14.AutoSize = true;\n            this.label14.Location = new System.Drawing.Point(6, 297);\n            this.label14.Name = \"label14\";\n            this.label14.Size = new System.Drawing.Size(59, 12);\n            this.label14.TabIndex = 63;\n            this.label14.Text = \"洋红(M)：\";\n            this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button7\n            // \n            this.button7.BackColor = System.Drawing.Color.Blue;\n            this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button7.Location = new System.Drawing.Point(147, 241);\n            this.button7.Name = \"button7\";\n            this.button7.Size = new System.Drawing.Size(20, 20);\n            this.button7.TabIndex = 62;\n            this.button7.UseVisualStyleBackColor = false;\n            // \n            // label11\n            // \n            this.label11.AutoSize = true;\n            this.label11.Location = new System.Drawing.Point(239, 243);\n            this.label11.Name = \"label11\";\n            this.label11.Size = new System.Drawing.Size(11, 12);\n            this.label11.TabIndex = 61;\n            this.label11.Text = \"%\";\n            this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox5\n            // \n            this.textBox5.Location = new System.Drawing.Point(173, 240);\n            this.textBox5.Name = \"textBox5\";\n            this.textBox5.Size = new System.Drawing.Size(60, 21);\n            this.textBox5.TabIndex = 60;\n            this.textBox5.Text = \"20\";\n            this.textBox5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar5\n            // \n            this.hScrollBar5.Location = new System.Drawing.Point(8, 269);\n            this.hScrollBar5.Maximum = 309;\n            this.hScrollBar5.Minimum = -200;\n            this.hScrollBar5.Name = \"hScrollBar5\";\n            this.hScrollBar5.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar5.TabIndex = 59;\n            this.hScrollBar5.Value = 20;\n            this.hScrollBar5.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar5_Scroll_1);\n            // \n            // label12\n            // \n            this.label12.AutoSize = true;\n            this.label12.Location = new System.Drawing.Point(6, 243);\n            this.label12.Name = \"label12\";\n            this.label12.Size = new System.Drawing.Size(59, 12);\n            this.label12.TabIndex = 58;\n            this.label12.Text = \"蓝色(B)：\";\n            this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button6\n            // \n            this.button6.BackColor = System.Drawing.Color.Cyan;\n            this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button6.Location = new System.Drawing.Point(147, 187);\n            this.button6.Name = \"button6\";\n            this.button6.Size = new System.Drawing.Size(20, 20);\n            this.button6.TabIndex = 57;\n            this.button6.UseVisualStyleBackColor = false;\n            // \n            // label9\n            // \n            this.label9.AutoSize = true;\n            this.label9.Location = new System.Drawing.Point(239, 189);\n            this.label9.Name = \"label9\";\n            this.label9.Size = new System.Drawing.Size(11, 12);\n            this.label9.TabIndex = 56;\n            this.label9.Text = \"%\";\n            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox4\n            // \n            this.textBox4.Location = new System.Drawing.Point(173, 186);\n            this.textBox4.Name = \"textBox4\";\n            this.textBox4.Size = new System.Drawing.Size(60, 21);\n            this.textBox4.TabIndex = 55;\n            this.textBox4.Text = \"60\";\n            this.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar4\n            // \n            this.hScrollBar4.Location = new System.Drawing.Point(8, 215);\n            this.hScrollBar4.Maximum = 309;\n            this.hScrollBar4.Minimum = -200;\n            this.hScrollBar4.Name = \"hScrollBar4\";\n            this.hScrollBar4.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar4.TabIndex = 54;\n            this.hScrollBar4.Value = 60;\n            this.hScrollBar4.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar4_Scroll_1);\n            // \n            // label10\n            // \n            this.label10.AutoSize = true;\n            this.label10.Location = new System.Drawing.Point(6, 189);\n            this.label10.Name = \"label10\";\n            this.label10.Size = new System.Drawing.Size(59, 12);\n            this.label10.TabIndex = 53;\n            this.label10.Text = \"青色(C)：\";\n            this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button5\n            // \n            this.button5.BackColor = System.Drawing.Color.Green;\n            this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button5.Location = new System.Drawing.Point(147, 134);\n            this.button5.Name = \"button5\";\n            this.button5.Size = new System.Drawing.Size(20, 20);\n            this.button5.TabIndex = 52;\n            this.button5.UseVisualStyleBackColor = false;\n            // \n            // label7\n            // \n            this.label7.AutoSize = true;\n            this.label7.Location = new System.Drawing.Point(239, 136);\n            this.label7.Name = \"label7\";\n            this.label7.Size = new System.Drawing.Size(11, 12);\n            this.label7.TabIndex = 51;\n            this.label7.Text = \"%\";\n            this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(173, 133);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(60, 21);\n            this.textBox3.TabIndex = 50;\n            this.textBox3.Text = \"40\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar3\n            // \n            this.hScrollBar3.Location = new System.Drawing.Point(8, 162);\n            this.hScrollBar3.Maximum = 309;\n            this.hScrollBar3.Minimum = -200;\n            this.hScrollBar3.Name = \"hScrollBar3\";\n            this.hScrollBar3.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar3.TabIndex = 49;\n            this.hScrollBar3.Value = 40;\n            this.hScrollBar3.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar3_Scroll_1);\n            // \n            // label8\n            // \n            this.label8.AutoSize = true;\n            this.label8.Location = new System.Drawing.Point(6, 136);\n            this.label8.Name = \"label8\";\n            this.label8.Size = new System.Drawing.Size(59, 12);\n            this.label8.TabIndex = 48;\n            this.label8.Text = \"绿色(G)：\";\n            this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button4\n            // \n            this.button4.BackColor = System.Drawing.Color.Yellow;\n            this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button4.Location = new System.Drawing.Point(147, 81);\n            this.button4.Name = \"button4\";\n            this.button4.Size = new System.Drawing.Size(20, 20);\n            this.button4.TabIndex = 47;\n            this.button4.UseVisualStyleBackColor = false;\n            // \n            // label5\n            // \n            this.label5.AutoSize = true;\n            this.label5.Location = new System.Drawing.Point(239, 83);\n            this.label5.Name = \"label5\";\n            this.label5.Size = new System.Drawing.Size(11, 12);\n            this.label5.TabIndex = 46;\n            this.label5.Text = \"%\";\n            this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(173, 80);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(60, 21);\n            this.textBox2.TabIndex = 45;\n            this.textBox2.Text = \"60\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar2\n            // \n            this.hScrollBar2.Location = new System.Drawing.Point(8, 109);\n            this.hScrollBar2.Maximum = 309;\n            this.hScrollBar2.Minimum = -200;\n            this.hScrollBar2.Name = \"hScrollBar2\";\n            this.hScrollBar2.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar2.TabIndex = 44;\n            this.hScrollBar2.Value = 60;\n            this.hScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar2_Scroll_1);\n            // \n            // label6\n            // \n            this.label6.AutoSize = true;\n            this.label6.Location = new System.Drawing.Point(6, 83);\n            this.label6.Name = \"label6\";\n            this.label6.Size = new System.Drawing.Size(59, 12);\n            this.label6.TabIndex = 43;\n            this.label6.Text = \"黄色(Y)：\";\n            this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button3\n            // \n            this.button3.BackColor = System.Drawing.Color.Red;\n            this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\n            this.button3.Location = new System.Drawing.Point(147, 28);\n            this.button3.Name = \"button3\";\n            this.button3.Size = new System.Drawing.Size(20, 20);\n            this.button3.TabIndex = 42;\n            this.button3.UseVisualStyleBackColor = false;\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(239, 30);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(11, 12);\n            this.label3.TabIndex = 41;\n            this.label3.Text = \"%\";\n            this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(173, 27);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(60, 21);\n            this.textBox1.TabIndex = 40;\n            this.textBox1.Text = \"40\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar1\n            // \n            this.hScrollBar1.Location = new System.Drawing.Point(8, 56);\n            this.hScrollBar1.Maximum = 309;\n            this.hScrollBar1.Minimum = -200;\n            this.hScrollBar1.Name = \"hScrollBar1\";\n            this.hScrollBar1.Size = new System.Drawing.Size(227, 17);\n            this.hScrollBar1.TabIndex = 39;\n            this.hScrollBar1.Value = 40;\n            this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar1_Scroll_1);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(6, 30);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 38;\n            this.label2.Text = \"红色(R)：\";\n            this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\n                        | System.Windows.Forms.AnchorStyles.Left)\n                        | System.Windows.Forms.AnchorStyles.Right)));\n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(269, 43);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(367, 367);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 73;\n            this.pictureBox1.TabStop = false;\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(409, 417);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 74;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // BlackWhiteForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(653, 459);\n            this.Controls.Add(this.skinButton1);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.label15);\n            this.Controls.Add(this.comboBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(653, 459);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(653, 459);\n            this.Name = \"BlackWhiteForm\";\n            this.Text = \"黑白\";\n            this.TitleCenter = false;\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.Label label15;\n        private System.Windows.Forms.ComboBox comboBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private System.Windows.Forms.Button button8;\n        private System.Windows.Forms.Label label13;\n        private System.Windows.Forms.TextBox textBox6;\n        private System.Windows.Forms.HScrollBar hScrollBar6;\n        private System.Windows.Forms.Label label14;\n        private System.Windows.Forms.Button button7;\n        private System.Windows.Forms.Label label11;\n        private System.Windows.Forms.TextBox textBox5;\n        private System.Windows.Forms.HScrollBar hScrollBar5;\n        private System.Windows.Forms.Label label12;\n        private System.Windows.Forms.Button button6;\n        private System.Windows.Forms.Label label9;\n        private System.Windows.Forms.TextBox textBox4;\n        private System.Windows.Forms.HScrollBar hScrollBar4;\n        private System.Windows.Forms.Label label10;\n        private System.Windows.Forms.Button button5;\n        private System.Windows.Forms.Label label7;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.HScrollBar hScrollBar3;\n        private System.Windows.Forms.Label label8;\n        private System.Windows.Forms.Button button4;\n        private System.Windows.Forms.Label label5;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.HScrollBar hScrollBar2;\n        private System.Windows.Forms.Label label6;\n        private System.Windows.Forms.Button button3;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar1;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BlackWhiteForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class BlackWhiteForm : CCWin.Skin_Mac\n    {\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"path\"></param>\n        public BlackWhiteForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            comboBox1.SelectedIndex = 0;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 200 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 200 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n                BlackWhite(0);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int kRed = 0, kYellow = 0, kGreen = 0, kCyan = 0, kBlue = 0, kMagenta = 0;\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                this.DialogResult = DialogResult.OK;\n                this.Close();\n            }\n        }\n\n        private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                BlackWhite(comboBox1.SelectedIndex);\n            }\n        }\n        public int getKRed\n        {\n            get { return kRed; }\n        }\n        public int getKGreen\n        {\n            get { return kGreen; }\n        }\n        public int getKBlue\n        {\n            get { return kBlue; }\n        }\n        public int getKYellow\n        {\n            get { return kYellow; }\n        }\n        public int getKCyan\n        {\n            get { return kCyan; }\n        }\n        public int getKMagenta\n        {\n            get { return kMagenta; }\n        }\n        private void BlackWhite(int mode)\n        {\n            switch (mode)\n            {\n                case 0://default\n                    kRed = 40;\n                    kYellow = 60;\n                    kGreen = 40;\n                    kCyan = 60;\n                    kBlue = 20;\n                    kMagenta = 80;\n                    break;\n                case 1://蓝色滤镜\n                    kRed = 0;\n                    kYellow = 0;\n                    kGreen = 0;\n                    kCyan = 110;\n                    kBlue = 110;\n                    kMagenta = 110;\n                    break;\n                case 2://较暗\n                    kRed = 30;\n                    kYellow = 50;\n                    kGreen = 30;\n                    kCyan = 50;\n                    kBlue = 10;\n                    kMagenta = 70;\n                    break;\n                case 3://绿色滤镜\n                    kRed = 50;\n                    kYellow = 120;\n                    kGreen = 90;\n                    kCyan = 50;\n                    kBlue = 0;\n                    kMagenta = 0;\n                    break;\n                case 4://高对比度蓝色滤镜\n                    kRed = -50;\n                    kYellow = -50;\n                    kGreen = -50;\n                    kCyan = 150;\n                    kBlue = 150;\n                    kMagenta = 150;\n                    break;\n                case 5://高对比度红色滤镜\n                    kRed = 120;\n                    kYellow = 120;\n                    kGreen = -10;\n                    kCyan = -50;\n                    kBlue = -50;\n                    kMagenta = 120;\n                    break;\n                case 6://红外线\n                    kRed = -40;\n                    kYellow = 235;\n                    kGreen = 144;\n                    kCyan = -68;\n                    kBlue = -3;\n                    kMagenta = -107;\n                    break;\n                case 7://较亮\n                    kRed = 50;\n                    kYellow = 70;\n                    kGreen = 50;\n                    kCyan = 70;\n                    kBlue = 30;\n                    kMagenta = 90;\n                    break;\n                case 8://最黑\n                    kRed = 0;\n                    kYellow = 0;\n                    kGreen = 0;\n                    kCyan = 0;\n                    kBlue = 0;\n                    kMagenta = 0;\n                    break;\n                case 9://最白\n                    kRed = 100;\n                    kYellow = 100;\n                    kGreen = 100;\n                    kCyan = 100;\n                    kBlue = 100;\n                    kMagenta = 100;\n                    break;\n                case 10://中灰密度\n                    kRed = 128;\n                    kYellow = 128;\n                    kGreen = 100;\n                    kCyan = 100;\n                    kBlue = 128;\n                    kMagenta = 100;\n                    break;\n                case 11://红色滤镜\n                    kRed = 120;\n                    kYellow = 110;\n                    kGreen = -10;\n                    kCyan = -50;\n                    kBlue = 0;\n                    kMagenta = 120;\n                    break;\n                case 12://黄色滤镜\n                    kRed = 120;\n                    kYellow = 110;\n                    kGreen = 40;\n                    kCyan = -30;\n                    kBlue = 0;\n                    kMagenta = 70;\n                    break;\n                default:\n                    kRed = 40;\n                    kYellow = 60;\n                    kGreen = 40;\n                    kCyan = 60;\n                    kBlue = 20;\n                    kMagenta = 80;\n                    break;\n            }\n            hScrollBar1.Value = kRed;\n            hScrollBar2.Value = kYellow;\n            hScrollBar3.Value = kGreen;\n            hScrollBar4.Value = kCyan;\n            hScrollBar5.Value = kBlue;\n            hScrollBar6.Value = kMagenta;\n            textBox1.Text = kRed.ToString();\n            textBox2.Text = kYellow.ToString();\n            textBox3.Text = kGreen.ToString();\n            textBox4.Text = kCyan.ToString();\n            textBox5.Text = kBlue.ToString();\n            textBox6.Text = kMagenta.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        //red\n        private void hScrollBar1_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox1.Text = kRed.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        //yellow\n        private void hScrollBar2_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox2.Text = kYellow.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        ///////////////\n        //green\n        private void hScrollBar3_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox3.Text = kGreen.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        //cyan\n        private void hScrollBar4_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox4.Text = kCyan.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        //blue\n        private void hScrollBar5_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox5.Text = kBlue.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n        //magenta\n        private void hScrollBar6_Scroll_1(object sender, ScrollEventArgs e)\n        {\n            kRed = hScrollBar1.Value;\n            kYellow = hScrollBar2.Value;\n            kGreen = hScrollBar3.Value;\n            kCyan = hScrollBar4.Value;\n            kBlue = hScrollBar5.Value;\n            kMagenta = hScrollBar6.Value;\n            textBox6.Text = kMagenta.ToString();\n            if (pictureBox1.Image != null)\n            {\n                pictureBox1.Image = (Image)zPhoto.BlackwhiteProcess(curBitmap, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BlackWhiteForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BrightContrastForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class BrightContrastForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.checkBox1 = new System.Windows.Forms.CheckBox();\n            this.hScrollBar1 = new System.Windows.Forms.HScrollBar();\n            this.hScrollBar2 = new System.Windows.Forms.HScrollBar();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.label2 = new System.Windows.Forms.Label();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 3;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.checkBox1);\n            this.groupBox1.Controls.Add(this.hScrollBar1);\n            this.groupBox1.Controls.Add(this.hScrollBar2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 2;\n            this.groupBox1.TabStop = false;\n            // \n            // checkBox1\n            // \n            this.checkBox1.AutoSize = true;\n            this.checkBox1.Location = new System.Drawing.Point(17, 124);\n            this.checkBox1.Name = \"checkBox1\";\n            this.checkBox1.Size = new System.Drawing.Size(48, 16);\n            this.checkBox1.TabIndex = 8;\n            this.checkBox1.Text = \"旧版\";\n            this.checkBox1.UseVisualStyleBackColor = true;\n            this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);\n            // \n            // hScrollBar1\n            // \n            this.hScrollBar1.Location = new System.Drawing.Point(11, 40);\n            this.hScrollBar1.Maximum = 109;\n            this.hScrollBar1.Minimum = -100;\n            this.hScrollBar1.Name = \"hScrollBar1\";\n            this.hScrollBar1.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar1.TabIndex = 4;\n            this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar1_Scroll);\n            // \n            // hScrollBar2\n            // \n            this.hScrollBar2.Location = new System.Drawing.Point(11, 93);\n            this.hScrollBar2.Maximum = 109;\n            this.hScrollBar2.Minimum = -100;\n            this.hScrollBar2.Name = \"hScrollBar2\";\n            this.hScrollBar2.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar2.TabIndex = 5;\n            this.hScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar2_Scroll);\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(74, 65);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(65, 21);\n            this.textBox2.TabIndex = 7;\n            this.textBox2.Text = \"0\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(74, 14);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(65, 21);\n            this.textBox1.TabIndex = 6;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(15, 17);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 4;\n            this.label1.Text = \"亮度：\";\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(15, 68);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(53, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"对比度：\";\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(100, 121);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // BrightContrastForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"BrightContrastForm\";\n            this.Text = \"图像亮度对比度\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.CheckBox checkBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar1;\n        private System.Windows.Forms.HScrollBar hScrollBar2;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.Label label2;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BrightContrastForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class BrightContrastForm : CCWin.Skin_Mac\n    {\n        public BrightContrastForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private int brightness = 0;\n        private int contrast = 0;\n        private bool versionNew = true;\n        private Bitmap curBitmap = null;\n        public int getBright\n        {\n            get { return brightness; }\n        }\n        public int getContrast\n        {\n            get { return contrast; }\n        }\n        public bool getVersion\n        {\n            get { return versionNew; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                //brightness = hScrollBar1.Value;\n                //contrast = hScrollBar2.Value;\n                this.DialogResult = DialogResult.OK;\n                this.Close();\n            }\n        }\n        //bright\n        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox1.Text = hScrollBar1.Value.ToString();\n                brightness = hScrollBar1.Value;\n                contrast = hScrollBar2.Value;\n                if (versionNew)\n                {\n                    pictureBox1.Image = zPhoto.NLinearBrightContrastAdjust(curBitmap, brightness,contrast, 128);\n                }\n                else\n                {\n                    pictureBox1.Image = zPhoto.LinearBrightContrastAdjust(curBitmap, brightness, contrast, 128);\n                }\n            }\n        }\n        //contrast\n        private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox2.Text = hScrollBar2.Value.ToString();\n                brightness = hScrollBar1.Value;\n                contrast = hScrollBar2.Value;\n                if (versionNew)\n                {\n                    pictureBox1.Image = zPhoto.NLinearBrightContrastAdjust(curBitmap, brightness, contrast, 128);\n                }\n                else\n                {\n                    pictureBox1.Image = zPhoto.LinearBrightContrastAdjust(curBitmap, brightness, contrast, 128);\n                }\n                \n            }\n        }\n\n        private void checkBox1_CheckedChanged(object sender, EventArgs e)\n        {\n            if (checkBox1.Checked)\n            {\n                versionNew = false;\n                //hScrollBar1.Maximum = 159;\n                //hScrollBar1.Minimum = -150;\n                //hScrollBar2.Maximum = 109;\n                //hScrollBar2.Minimum = -50;\n                hScrollBar1.Value = 0;\n                hScrollBar2.Value = 0;\n                textBox1.Text = hScrollBar1.Value.ToString();\n                textBox2.Text = hScrollBar2.Value.ToString();\n                brightness = 0;\n                contrast = 0;\n            }\n            else\n            {\n                versionNew = true;\n                //hScrollBar1.Maximum = 109;\n                //hScrollBar1.Minimum = -100;\n                //hScrollBar2.Maximum = 109;\n                //hScrollBar2.Minimum = -100;\n                hScrollBar1.Value = 0;\n                hScrollBar2.Value = 0;\n                textBox1.Text = hScrollBar1.Value.ToString();\n                textBox2.Text = hScrollBar2.Value.ToString();\n                brightness = 0;\n                contrast = 0;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/BrightContrastForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ChannelMixForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ChannelMixForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.label8 = new System.Windows.Forms.Label();\n            this.label4 = new System.Windows.Forms.Label();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.hScrollBar3 = new System.Windows.Forms.HScrollBar();\n            this.hScrollBar2 = new System.Windows.Forms.HScrollBar();\n            this.hScrollBar1 = new System.Windows.Forms.HScrollBar();\n            this.label6 = new System.Windows.Forms.Label();\n            this.label5 = new System.Windows.Forms.Label();\n            this.label3 = new System.Windows.Forms.Label();\n            this.checkBox1 = new System.Windows.Forms.CheckBox();\n            this.hScrollBar4 = new System.Windows.Forms.HScrollBar();\n            this.label7 = new System.Windows.Forms.Label();\n            this.textBox4 = new System.Windows.Forms.TextBox();\n            this.label2 = new System.Windows.Forms.Label();\n            this.comboBox1 = new System.Windows.Forms.ComboBox();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.label9 = new System.Windows.Forms.Label();\n            this.button1 = new System.Windows.Forms.Button();\n            this.groupBox1.SuspendLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.SuspendLayout();\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.label8);\n            this.groupBox1.Controls.Add(this.label4);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.hScrollBar3);\n            this.groupBox1.Controls.Add(this.hScrollBar2);\n            this.groupBox1.Controls.Add(this.hScrollBar1);\n            this.groupBox1.Controls.Add(this.label6);\n            this.groupBox1.Controls.Add(this.label5);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Location = new System.Drawing.Point(18, 70);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(275, 168);\n            this.groupBox1.TabIndex = 0;\n            this.groupBox1.TabStop = false;\n            this.groupBox1.Text = \"源通道\";\n            // \n            // label8\n            // \n            this.label8.AutoSize = true;\n            this.label8.Location = new System.Drawing.Point(249, 113);\n            this.label8.Name = \"label8\";\n            this.label8.Size = new System.Drawing.Size(11, 12);\n            this.label8.TabIndex = 71;\n            this.label8.Text = \"%\";\n            this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // label4\n            // \n            this.label4.AutoSize = true;\n            this.label4.Location = new System.Drawing.Point(249, 69);\n            this.label4.Name = \"label4\";\n            this.label4.Size = new System.Drawing.Size(11, 12);\n            this.label4.TabIndex = 70;\n            this.label4.Text = \"%\";\n            this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(195, 110);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(46, 21);\n            this.textBox3.TabIndex = 63;\n            this.textBox3.Text = \"0\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(249, 23);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(11, 12);\n            this.label1.TabIndex = 69;\n            this.label1.Text = \"%\";\n            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(195, 66);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(46, 21);\n            this.textBox2.TabIndex = 62;\n            this.textBox2.Text = \"0\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(195, 20);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(46, 21);\n            this.textBox1.TabIndex = 61;\n            this.textBox1.Text = \"100\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar3\n            // \n            this.hScrollBar3.Location = new System.Drawing.Point(59, 134);\n            this.hScrollBar3.Maximum = 209;\n            this.hScrollBar3.Minimum = -200;\n            this.hScrollBar3.Name = \"hScrollBar3\";\n            this.hScrollBar3.Size = new System.Drawing.Size(201, 17);\n            this.hScrollBar3.TabIndex = 60;\n            this.hScrollBar3.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar3_Scroll);\n            // \n            // hScrollBar2\n            // \n            this.hScrollBar2.Location = new System.Drawing.Point(59, 90);\n            this.hScrollBar2.Maximum = 209;\n            this.hScrollBar2.Minimum = -200;\n            this.hScrollBar2.Name = \"hScrollBar2\";\n            this.hScrollBar2.Size = new System.Drawing.Size(201, 17);\n            this.hScrollBar2.TabIndex = 59;\n            this.hScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar2_Scroll);\n            // \n            // hScrollBar1\n            // \n            this.hScrollBar1.Location = new System.Drawing.Point(59, 46);\n            this.hScrollBar1.Maximum = 209;\n            this.hScrollBar1.Minimum = -200;\n            this.hScrollBar1.Name = \"hScrollBar1\";\n            this.hScrollBar1.Size = new System.Drawing.Size(201, 17);\n            this.hScrollBar1.TabIndex = 58;\n            this.hScrollBar1.Value = 100;\n            this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar1_Scroll);\n            // \n            // label6\n            // \n            this.label6.AutoSize = true;\n            this.label6.Location = new System.Drawing.Point(12, 117);\n            this.label6.Name = \"label6\";\n            this.label6.Size = new System.Drawing.Size(41, 12);\n            this.label6.TabIndex = 57;\n            this.label6.Text = \"蓝色：\";\n            // \n            // label5\n            // \n            this.label5.AutoSize = true;\n            this.label5.Location = new System.Drawing.Point(14, 73);\n            this.label5.Name = \"label5\";\n            this.label5.Size = new System.Drawing.Size(41, 12);\n            this.label5.TabIndex = 56;\n            this.label5.Text = \"绿色：\";\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(14, 25);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(41, 12);\n            this.label3.TabIndex = 55;\n            this.label3.Text = \"红色：\";\n            // \n            // checkBox1\n            // \n            this.checkBox1.AutoSize = true;\n            this.checkBox1.Location = new System.Drawing.Point(32, 296);\n            this.checkBox1.Name = \"checkBox1\";\n            this.checkBox1.Size = new System.Drawing.Size(48, 16);\n            this.checkBox1.TabIndex = 67;\n            this.checkBox1.Text = \"单色\";\n            this.checkBox1.UseVisualStyleBackColor = true;\n            this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);\n            // \n            // hScrollBar4\n            // \n            this.hScrollBar4.Location = new System.Drawing.Point(77, 267);\n            this.hScrollBar4.Maximum = 209;\n            this.hScrollBar4.Minimum = -200;\n            this.hScrollBar4.Name = \"hScrollBar4\";\n            this.hScrollBar4.Size = new System.Drawing.Size(201, 17);\n            this.hScrollBar4.TabIndex = 66;\n            this.hScrollBar4.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar4_Scroll);\n            // \n            // label7\n            // \n            this.label7.AutoSize = true;\n            this.label7.Location = new System.Drawing.Point(32, 248);\n            this.label7.Name = \"label7\";\n            this.label7.Size = new System.Drawing.Size(47, 12);\n            this.label7.TabIndex = 65;\n            this.label7.Text = \"常数N：\";\n            // \n            // textBox4\n            // \n            this.textBox4.Location = new System.Drawing.Point(213, 243);\n            this.textBox4.Name = \"textBox4\";\n            this.textBox4.Size = new System.Drawing.Size(46, 21);\n            this.textBox4.TabIndex = 64;\n            this.textBox4.Text = \"0\";\n            this.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(21, 49);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(65, 12);\n            this.label2.TabIndex = 54;\n            this.label2.Text = \"输出通道：\";\n            // \n            // comboBox1\n            // \n            this.comboBox1.FormattingEnabled = true;\n            this.comboBox1.Items.AddRange(new object[] {\n            \"红\",\n            \"绿\",\n            \"蓝\",\n            \"灰色\"});\n            this.comboBox1.Location = new System.Drawing.Point(120, 46);\n            this.comboBox1.Name = \"comboBox1\";\n            this.comboBox1.Size = new System.Drawing.Size(77, 20);\n            this.comboBox1.TabIndex = 53;\n            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\n                        | System.Windows.Forms.AnchorStyles.Right)));\n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(308, 46);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(355, 331);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 68;\n            this.pictureBox1.TabStop = false;\n            // \n            // label9\n            // \n            this.label9.AutoSize = true;\n            this.label9.Location = new System.Drawing.Point(267, 248);\n            this.label9.Name = \"label9\";\n            this.label9.Size = new System.Drawing.Size(11, 12);\n            this.label9.TabIndex = 72;\n            this.label9.Text = \"%\";\n            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // button1\n            // \n            this.button1.Location = new System.Drawing.Point(120, 337);\n            this.button1.Name = \"button1\";\n            this.button1.Size = new System.Drawing.Size(75, 23);\n            this.button1.TabIndex = 73;\n            this.button1.Text = \"确定\";\n            this.button1.UseVisualStyleBackColor = true;\n            this.button1.Click += new System.EventHandler(this.button1_Click);\n            // \n            // ChannelMixForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(679, 395);\n            this.Controls.Add(this.button1);\n            this.Controls.Add(this.label9);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.checkBox1);\n            this.Controls.Add(this.groupBox1);\n            this.Controls.Add(this.hScrollBar4);\n            this.Controls.Add(this.comboBox1);\n            this.Controls.Add(this.label7);\n            this.Controls.Add(this.textBox4);\n            this.Controls.Add(this.label2);\n            this.MaximumSize = new System.Drawing.Size(679, 395);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(679, 395);\n            this.Name = \"ChannelMixForm\";\n            this.Text = \"通道混合器\";\n            this.TitleCenter = false;\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.GroupBox groupBox1;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar3;\n        private System.Windows.Forms.HScrollBar hScrollBar2;\n        private System.Windows.Forms.HScrollBar hScrollBar1;\n        private System.Windows.Forms.Label label6;\n        private System.Windows.Forms.Label label5;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.CheckBox checkBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar4;\n        private System.Windows.Forms.Label label7;\n        private System.Windows.Forms.TextBox textBox4;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.ComboBox comboBox1;\n        private System.Windows.Forms.Label label8;\n        private System.Windows.Forms.Label label4;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.Label label9;\n        private System.Windows.Forms.Button button1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ChannelMixForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ChannelMixForm : CCWin.Skin_Mac\n    {\n        public ChannelMixForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            srcBitmap = new Bitmap (path);\n            curBitmap = new Bitmap(srcBitmap);\n            comboBox1.SelectedIndex = 0;\n            pictureBox1.Image = (Image)curBitmap;\n            zPhoto = new ZPhotoEngineDll();\n        }\n        private Bitmap curBitmap = null;\n        private Bitmap srcBitmap = null;\n        private int kr = 0, kg = 0, kb = 0, N = 0, channel = 0;\n        private bool singleColor = false;\n        private ZPhotoEngineDll zPhoto = null;\n        public Bitmap getResImage\n        {\n            get { return curBitmap; }\n        }\n        //red\n        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                textBox1.Text = hScrollBar1.Value.ToString();\n                kr = hScrollBar1.Value;\n                kg = hScrollBar2.Value;\n                kb = hScrollBar3.Value;\n                channel = comboBox1.SelectedIndex;\n                pictureBox1.Image = (Image)zPhoto.ChannelMixProcess(curBitmap, channel, kr, kg, kb, N, singleColor, false);\n            }\n        }\n        //green\n        private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                textBox2.Text = hScrollBar2.Value.ToString();\n                kr = hScrollBar1.Value;\n                kg = hScrollBar2.Value;\n                kb = hScrollBar3.Value;\n                channel = comboBox1.SelectedIndex;\n                pictureBox1.Image = (Image)zPhoto.ChannelMixProcess(curBitmap, channel, kr, kg, kb, N, singleColor, false);\n            }\n        }\n        //blue\n        private void hScrollBar3_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                textBox3.Text = hScrollBar3.Value.ToString();\n                kr = hScrollBar1.Value;\n                kg = hScrollBar2.Value;\n                kb = hScrollBar3.Value;\n                channel = comboBox1.SelectedIndex;\n                pictureBox1.Image = (Image)zPhoto.ChannelMixProcess(curBitmap, channel, kr, kg, kb, N, singleColor, false);\n            }\n        }\n        //N\n        private void hScrollBar4_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                N = hScrollBar4.Value;\n                kr = hScrollBar1.Value;\n                kg = hScrollBar2.Value;\n                kb = hScrollBar3.Value;\n                channel = comboBox1.SelectedIndex;\n                textBox4.Text = hScrollBar4.Value.ToString();\n                pictureBox1.Image = (Image)zPhoto.ChannelMixProcess(curBitmap, channel, kr, kg, kb, N, singleColor, true);\n            }\n        }\n\n        private void checkBox1_CheckedChanged(object sender, EventArgs e)\n        {\n            if (checkBox1.Checked)\n            {\n                singleColor = true;\n                comboBox1.SelectedIndex = 3;\n                kr = 40; \n                kg = 40;\n                kb = 20;\n                N = 0;\n                textBox1.Text = kr.ToString();\n                textBox2.Text = kg.ToString();\n                textBox3.Text = kb.ToString();\n                textBox4.Text = N.ToString();\n                hScrollBar1.Value = 40;\n                hScrollBar2.Value = 40;\n                hScrollBar3.Value = 20;\n                hScrollBar4.Value = 0;\n                curBitmap = new Bitmap(srcBitmap);\n                pictureBox1.Image = (Image)curBitmap;\n            }\n            else\n            {\n                singleColor = false;\n                comboBox1.SelectedIndex = 0;\n                kr = 100;\n                kg = 0;\n                kb = 0;\n                N = 0;\n                textBox1.Text = kr.ToString();\n                textBox2.Text = kg.ToString();\n                textBox3.Text = kb.ToString();\n                textBox4.Text = N.ToString();\n                hScrollBar1.Value = 100;\n                hScrollBar2.Value = 0;\n                hScrollBar3.Value = 0;\n                hScrollBar4.Value = 0;\n                curBitmap = new Bitmap(srcBitmap);\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n\n        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)\n        {\n            if (comboBox1.SelectedIndex == 3)\n            {\n                singleColor = true;\n                checkBox1.Checked = true;\n            }\n            else\n            {\n                singleColor = false;\n                checkBox1.Checked = false;\n            }\n        }\n\n        private void button1_Click(object sender, EventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                curBitmap = new Bitmap((Bitmap)pictureBox1.Image);\n                this.DialogResult = DialogResult.OK;\n                this.Close();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ChannelMixForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ColorbalanceForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ColorbalanceForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.checkBox1 = new System.Windows.Forms.CheckBox();\n            this.label7 = new System.Windows.Forms.Label();\n            this.label6 = new System.Windows.Forms.Label();\n            this.label5 = new System.Windows.Forms.Label();\n            this.label4 = new System.Windows.Forms.Label();\n            this.hScrollBar3 = new System.Windows.Forms.HScrollBar();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.label3 = new System.Windows.Forms.Label();\n            this.hScrollBar1 = new System.Windows.Forms.HScrollBar();\n            this.hScrollBar2 = new System.Windows.Forms.HScrollBar();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.label2 = new System.Windows.Forms.Label();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(253, 45);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(190, 190);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 7;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.checkBox1);\n            this.groupBox1.Controls.Add(this.label7);\n            this.groupBox1.Controls.Add(this.label6);\n            this.groupBox1.Controls.Add(this.label5);\n            this.groupBox1.Controls.Add(this.label4);\n            this.groupBox1.Controls.Add(this.hScrollBar3);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Controls.Add(this.hScrollBar1);\n            this.groupBox1.Controls.Add(this.hScrollBar2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Location = new System.Drawing.Point(9, 36);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(237, 199);\n            this.groupBox1.TabIndex = 6;\n            this.groupBox1.TabStop = false;\n            // \n            // checkBox1\n            // \n            this.checkBox1.AutoSize = true;\n            this.checkBox1.Checked = true;\n            this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;\n            this.checkBox1.Location = new System.Drawing.Point(17, 163);\n            this.checkBox1.Name = \"checkBox1\";\n            this.checkBox1.Size = new System.Drawing.Size(72, 16);\n            this.checkBox1.TabIndex = 15;\n            this.checkBox1.Text = \"保持明度\";\n            this.checkBox1.UseVisualStyleBackColor = true;\n            this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);\n            // \n            // label7\n            // \n            this.label7.AutoSize = true;\n            this.label7.Location = new System.Drawing.Point(204, 119);\n            this.label7.Name = \"label7\";\n            this.label7.Size = new System.Drawing.Size(29, 12);\n            this.label7.TabIndex = 14;\n            this.label7.Text = \"蓝色\";\n            // \n            // label6\n            // \n            this.label6.AutoSize = true;\n            this.label6.Location = new System.Drawing.Point(6, 119);\n            this.label6.Name = \"label6\";\n            this.label6.Size = new System.Drawing.Size(29, 12);\n            this.label6.TabIndex = 13;\n            this.label6.Text = \"黄色\";\n            // \n            // label5\n            // \n            this.label5.AutoSize = true;\n            this.label5.Location = new System.Drawing.Point(204, 47);\n            this.label5.Name = \"label5\";\n            this.label5.Size = new System.Drawing.Size(29, 12);\n            this.label5.TabIndex = 12;\n            this.label5.Text = \"红色\";\n            // \n            // label4\n            // \n            this.label4.AutoSize = true;\n            this.label4.Location = new System.Drawing.Point(6, 47);\n            this.label4.Name = \"label4\";\n            this.label4.Size = new System.Drawing.Size(29, 12);\n            this.label4.TabIndex = 11;\n            this.label4.Text = \"青色\";\n            // \n            // hScrollBar3\n            // \n            this.hScrollBar3.Location = new System.Drawing.Point(37, 116);\n            this.hScrollBar3.Maximum = 109;\n            this.hScrollBar3.Minimum = -100;\n            this.hScrollBar3.Name = \"hScrollBar3\";\n            this.hScrollBar3.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar3.TabIndex = 9;\n            this.hScrollBar3.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar3_Scroll);\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(163, 14);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(38, 21);\n            this.textBox3.TabIndex = 10;\n            this.textBox3.Text = \"0\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(204, 82);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(29, 12);\n            this.label3.TabIndex = 8;\n            this.label3.Text = \"绿色\";\n            // \n            // hScrollBar1\n            // \n            this.hScrollBar1.Location = new System.Drawing.Point(37, 44);\n            this.hScrollBar1.Maximum = 109;\n            this.hScrollBar1.Minimum = -100;\n            this.hScrollBar1.Name = \"hScrollBar1\";\n            this.hScrollBar1.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar1.TabIndex = 4;\n            this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar1_Scroll);\n            // \n            // hScrollBar2\n            // \n            this.hScrollBar2.Location = new System.Drawing.Point(37, 80);\n            this.hScrollBar2.Maximum = 109;\n            this.hScrollBar2.Minimum = -100;\n            this.hScrollBar2.Name = \"hScrollBar2\";\n            this.hScrollBar2.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar2.TabIndex = 5;\n            this.hScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar2_Scroll);\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(119, 14);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(38, 21);\n            this.textBox2.TabIndex = 7;\n            this.textBox2.Text = \"0\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(75, 14);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(38, 21);\n            this.textBox1.TabIndex = 6;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(15, 18);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(53, 12);\n            this.label1.TabIndex = 4;\n            this.label1.Text = \"色阶(L):\";\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(6, 82);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(29, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"洋红\";\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(147, 159);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // ColorbalanceForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(450, 243);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(450, 243);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(450, 243);\n            this.Name = \"ColorbalanceForm\";\n            this.Text = \"色彩平衡\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar3;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.HScrollBar hScrollBar1;\n        private System.Windows.Forms.HScrollBar hScrollBar2;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.Label label2;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label5;\n        private System.Windows.Forms.Label label4;\n        private System.Windows.Forms.CheckBox checkBox1;\n        private System.Windows.Forms.Label label7;\n        private System.Windows.Forms.Label label6;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ColorbalanceForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ColorbalanceForm : CCWin.Skin_Mac\n    {\n        public ColorbalanceForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int cyan = 0, magenta = 0, yellow = 0;\n        private bool preserveLuminosity = true;\n        public int getCyan\n        {\n            get { return cyan; }\n        }\n        public int getMagenta\n        {\n            get { return magenta; }\n        }\n        public int getYellow\n        {\n            get { return yellow;  }\n        }\n        public bool getLum\n        {\n            get { return preserveLuminosity; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            cyan = hScrollBar1.Value;\n            magenta = hScrollBar2.Value;\n            yellow = hScrollBar3.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n        //cyan\n        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                cyan = hScrollBar1.Value;\n                magenta = hScrollBar2.Value;\n                yellow = hScrollBar3.Value;\n                textBox1.Text = cyan.ToString();\n                textBox2.Text = magenta.ToString();\n                textBox3.Text = yellow.ToString();\n                pictureBox1.Image = (Image)zPhoto.ColorBalanceProcess(curBitmap, cyan, magenta, yellow, 0, preserveLuminosity);\n            }\n        }\n        //magenta\n        private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                cyan = hScrollBar1.Value;\n                magenta = hScrollBar2.Value;\n                yellow = hScrollBar3.Value;\n                textBox1.Text = cyan.ToString();\n                textBox2.Text = magenta.ToString();\n                textBox3.Text = yellow.ToString();\n                pictureBox1.Image = (Image)zPhoto.ColorBalanceProcess(curBitmap, cyan, magenta, yellow, 0, preserveLuminosity);\n            }\n        }\n        //yellow\n        private void hScrollBar3_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                cyan = hScrollBar1.Value;\n                magenta = hScrollBar2.Value;\n                yellow = hScrollBar3.Value;\n                textBox1.Text = cyan.ToString();\n                textBox2.Text = magenta.ToString();\n                textBox3.Text = yellow.ToString();\n                pictureBox1.Image = (Image)zPhoto.ColorBalanceProcess(curBitmap, cyan, magenta, yellow, 0, preserveLuminosity);\n            }\n        }\n\n        private void checkBox1_CheckedChanged(object sender, EventArgs e)\n        {\n            if (checkBox1.Checked)\n            {\n                preserveLuminosity = true;\n                hScrollBar1.Value = 0;\n                hScrollBar2.Value = 0;\n                hScrollBar3.Value = 0;\n                cyan = hScrollBar1.Value;\n                magenta = hScrollBar1.Value;\n                yellow = hScrollBar1.Value;\n                textBox1.Text = cyan.ToString();\n                textBox2.Text = magenta.ToString();\n                textBox3.Text = yellow.ToString();\n            }\n            else\n            {\n                preserveLuminosity = false;\n                hScrollBar1.Value = 0;\n                hScrollBar2.Value = 0;\n                hScrollBar3.Value = 0;\n                cyan = hScrollBar1.Value;\n                magenta = hScrollBar1.Value;\n                yellow = hScrollBar1.Value;\n                textBox1.Text = cyan.ToString();\n                textBox2.Text = magenta.ToString();\n                textBox3.Text = yellow.ToString();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ColorbalanceForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DifussionForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class DifussionForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 11;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 10;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 6;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 6;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"数量：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"6\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // DifussionForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"DifussionForm\";\n            this.Text = \"扩散\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DifussionForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class DifussionForm : CCWin.Skin_Mac\n    {\n        public DifussionForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.DiffusionProcess(curBitmap, intensity);\n            }\n        }\n        private Bitmap curBitmap = null;\n        private int intensity = 6;\n        private ZPhotoEngineDll zPhoto = null;\n        public int getIntensity\n        {\n            get { return intensity; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                intensity = skinHScrollBar1.Value;\n                textBox1.Text = intensity.ToString();\n                pictureBox1.Image = (Image)zPhoto.DiffusionProcess(curBitmap, intensity);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            intensity = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DifussionForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DisplacementFrom.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class DisplacementFrom\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.label2 = new System.Windows.Forms.Label();\n            this.label3 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.label4 = new System.Windows.Forms.Label();\n            this.label5 = new System.Windows.Forms.Label();\n            this.SuspendLayout();\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(111, 258);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 4;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(18, 53);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(77, 12);\n            this.label1.TabIndex = 5;\n            this.label1.Text = \"置换图路径：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(101, 50);\n            this.textBox1.Multiline = true;\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(175, 63);\n            this.textBox1.TabIndex = 6;\n            this.textBox1.Text = \"C:\\\\\\\\test.jpg\";\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(18, 132);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(65, 12);\n            this.label2.TabIndex = 7;\n            this.label2.Text = \"水平比例：\";\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(18, 166);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(65, 12);\n            this.label3.TabIndex = 8;\n            this.label3.Text = \"垂直比例：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(101, 129);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(77, 21);\n            this.textBox2.TabIndex = 9;\n            this.textBox2.Text = \"10\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(101, 163);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(77, 21);\n            this.textBox3.TabIndex = 10;\n            this.textBox3.Text = \"10\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label4\n            // \n            this.label4.AutoSize = true;\n            this.label4.Location = new System.Drawing.Point(18, 201);\n            this.label4.Name = \"label4\";\n            this.label4.Size = new System.Drawing.Size(113, 12);\n            this.label4.TabIndex = 11;\n            this.label4.Text = \"置换图：伸展以适合\";\n            // \n            // label5\n            // \n            this.label5.AutoSize = true;\n            this.label5.Location = new System.Drawing.Point(18, 232);\n            this.label5.Name = \"label5\";\n            this.label5.Size = new System.Drawing.Size(149, 12);\n            this.label5.TabIndex = 12;\n            this.label5.Text = \"未定义区域：重复边缘像素\";\n            // \n            // DisplacementFrom\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(299, 292);\n            this.Controls.Add(this.label5);\n            this.Controls.Add(this.label4);\n            this.Controls.Add(this.textBox3);\n            this.Controls.Add(this.textBox2);\n            this.Controls.Add(this.label3);\n            this.Controls.Add(this.label2);\n            this.Controls.Add(this.textBox1);\n            this.Controls.Add(this.label1);\n            this.Controls.Add(this.skinButton1);\n            this.Name = \"DisplacementFrom\";\n            this.Text = \"置换\";\n            this.TitleCenter = false;\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.Label label4;\n        private System.Windows.Forms.Label label5;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DisplacementFrom.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class DisplacementFrom : CCWin.Skin_Mac\n    {\n        public DisplacementFrom()\n        {\n            InitializeComponent();\n        }\n        private string mskPath = null;\n        private int hRatio = 10;\n        private int vRatio = 10;\n        public string getMaskPath\n        {\n            get { return mskPath; }\n        }\n        public int getHRatio\n        {\n            get { return hRatio; }\n        }\n        public int getVRatio\n        {\n            get { return vRatio; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            mskPath = textBox1.Text.ToString();\n            hRatio = Convert.ToInt32(textBox2.Text);\n            vRatio = Convert.ToInt32(textBox3.Text);\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/DisplacementFrom.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ExposureForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ExposureForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 7;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 6;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 50;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"强度(I)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // ExposureForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"ExposureForm\";\n            this.Text = \"曝光调节\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ExposureForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ExposureForm : CCWin.Skin_Mac\n    {\n        public ExposureForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private Bitmap curBitmap = null;\n        private int intensity = 0;\n        private ZPhotoEngineDll zPhoto = null;\n        public int getIntensity\n        {\n            get { return intensity; }\n        }\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                intensity = skinHScrollBar1.Value;\n                textBox1.Text = (intensity - 50).ToString();\n                pictureBox1.Image = (Image)zPhoto.ExposureAdjust(curBitmap, intensity);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            intensity = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ExposureForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/FilterForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class FilterForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.skinComboBox1 = new CCWin.SkinControl.SkinComboBox();\n            this.skinPictureBox1 = new CCWin.SkinControl.SkinPictureBox();\n            this.skinLabel1 = new CCWin.SkinControl.SkinLabel();\n            this.skinGroupBox1 = new CCWin.SkinControl.SkinGroupBox();\n            this.skinButton2 = new CCWin.SkinControl.SkinButton();\n            this.skinButton3 = new CCWin.SkinControl.SkinButton();\n            ((System.ComponentModel.ISupportInitialize)(this.skinPictureBox1)).BeginInit();\n            this.skinGroupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(6, 31);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 0;\n            this.skinButton1.Text = \"选择模板\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // skinComboBox1\n            // \n            this.skinComboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;\n            this.skinComboBox1.FormattingEnabled = true;\n            this.skinComboBox1.Items.AddRange(new object[] {\n            \"变暗\",\n            \"正片叠底\",\n            \"颜色加深\",\n            \"线性渐变\",\n            \"深色\",\n            \"变亮\",\n            \"滤色\",\n            \"颜色减淡  \",\n            \"颜色线性减淡\",\n            \"浅色\",\n            \"叠加\",\n            \"柔光\",\n            \"强光\",\n            \"亮光\",\n            \"线性\",\n            \"点光\",\n            \"实色\",\n            \"差值\",\n            \"排除\",\n            \"减去\",\n            \"划分\"});\n            this.skinComboBox1.Location = new System.Drawing.Point(197, 31);\n            this.skinComboBox1.Name = \"skinComboBox1\";\n            this.skinComboBox1.Size = new System.Drawing.Size(121, 22);\n            this.skinComboBox1.TabIndex = 1;\n            this.skinComboBox1.WaterText = \"\";\n            // \n            // skinPictureBox1\n            // \n            this.skinPictureBox1.BackColor = System.Drawing.Color.Transparent;\n            this.skinPictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;\n            this.skinPictureBox1.Location = new System.Drawing.Point(19, 114);\n            this.skinPictureBox1.Name = \"skinPictureBox1\";\n            this.skinPictureBox1.Size = new System.Drawing.Size(324, 205);\n            this.skinPictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.skinPictureBox1.TabIndex = 2;\n            this.skinPictureBox1.TabStop = false;\n            // \n            // skinLabel1\n            // \n            this.skinLabel1.AutoSize = true;\n            this.skinLabel1.BackColor = System.Drawing.Color.Transparent;\n            this.skinLabel1.BorderColor = System.Drawing.Color.White;\n            this.skinLabel1.Font = new System.Drawing.Font(\"Microsoft YaHei\", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));\n            this.skinLabel1.Location = new System.Drawing.Point(102, 33);\n            this.skinLabel1.Name = \"skinLabel1\";\n            this.skinLabel1.Size = new System.Drawing.Size(92, 17);\n            this.skinLabel1.TabIndex = 3;\n            this.skinLabel1.Text = \"图层混合模式：\";\n            // \n            // skinGroupBox1\n            // \n            this.skinGroupBox1.BackColor = System.Drawing.Color.Transparent;\n            this.skinGroupBox1.BorderColor = System.Drawing.Color.DarkGray;\n            this.skinGroupBox1.Controls.Add(this.skinButton1);\n            this.skinGroupBox1.Controls.Add(this.skinLabel1);\n            this.skinGroupBox1.Controls.Add(this.skinComboBox1);\n            this.skinGroupBox1.ForeColor = System.Drawing.Color.Blue;\n            this.skinGroupBox1.Location = new System.Drawing.Point(19, 31);\n            this.skinGroupBox1.Name = \"skinGroupBox1\";\n            this.skinGroupBox1.RectBackColor = System.Drawing.Color.Transparent;\n            this.skinGroupBox1.RoundStyle = CCWin.SkinClass.RoundStyle.All;\n            this.skinGroupBox1.Size = new System.Drawing.Size(324, 79);\n            this.skinGroupBox1.TabIndex = 4;\n            this.skinGroupBox1.TabStop = false;\n            this.skinGroupBox1.TitleBorderColor = System.Drawing.Color.Red;\n            this.skinGroupBox1.TitleRectBackColor = System.Drawing.Color.Transparent;\n            this.skinGroupBox1.TitleRoundStyle = CCWin.SkinClass.RoundStyle.All;\n            // \n            // skinButton2\n            // \n            this.skinButton2.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton2.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton2.DownBack = null;\n            this.skinButton2.Location = new System.Drawing.Point(25, 331);\n            this.skinButton2.MouseBack = null;\n            this.skinButton2.Name = \"skinButton2\";\n            this.skinButton2.NormlBack = null;\n            this.skinButton2.Size = new System.Drawing.Size(120, 23);\n            this.skinButton2.TabIndex = 5;\n            this.skinButton2.Text = \"确定\";\n            this.skinButton2.UseVisualStyleBackColor = false;\n            this.skinButton2.Click += new System.EventHandler(this.skinButton2_Click);\n            // \n            // skinButton3\n            // \n            this.skinButton3.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton3.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton3.DownBack = null;\n            this.skinButton3.Location = new System.Drawing.Point(216, 331);\n            this.skinButton3.MouseBack = null;\n            this.skinButton3.Name = \"skinButton3\";\n            this.skinButton3.NormlBack = null;\n            this.skinButton3.Size = new System.Drawing.Size(120, 23);\n            this.skinButton3.TabIndex = 6;\n            this.skinButton3.Text = \"取消\";\n            this.skinButton3.UseVisualStyleBackColor = false;\n            this.skinButton3.Click += new System.EventHandler(this.skinButton3_Click);\n            // \n            // FilterForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(362, 367);\n            this.Controls.Add(this.skinButton3);\n            this.Controls.Add(this.skinButton2);\n            this.Controls.Add(this.skinGroupBox1);\n            this.Controls.Add(this.skinPictureBox1);\n            this.MaximumSize = new System.Drawing.Size(362, 367);\n            this.MinimumSize = new System.Drawing.Size(362, 367);\n            this.Name = \"FilterForm\";\n            this.Text = \"自定义滤镜\";\n            this.TitleCenter = false;\n            this.Load += new System.EventHandler(this.FilterForm_Load);\n            ((System.ComponentModel.ISupportInitialize)(this.skinPictureBox1)).EndInit();\n            this.skinGroupBox1.ResumeLayout(false);\n            this.skinGroupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private CCWin.SkinControl.SkinComboBox skinComboBox1;\n        private CCWin.SkinControl.SkinPictureBox skinPictureBox1;\n        private CCWin.SkinControl.SkinLabel skinLabel1;\n        private CCWin.SkinControl.SkinGroupBox skinGroupBox1;\n        private CCWin.SkinControl.SkinButton skinButton2;\n        private CCWin.SkinControl.SkinButton skinButton3;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/FilterForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing CCWin;\n\nnamespace TestDemo\n{\n    public partial class FilterForm : Skin_Mac\n    {\n        private Bitmap curBitmap = null;\n        private string curFileName;\n\n        private int filterId = 0;\n\n\n        public int getMode\n        {\n           get\n            {\n                 return filterId;\n            }\n        }\n        public string getMaskPath\n        {\n            get { return curFileName; }\n        }\n        public FilterForm( )\n        {\n            InitializeComponent();\n\n        }\n\n        //打开图像函数\n        public void OpenFile()\n        {\n            OpenFileDialog ofd = new OpenFileDialog();\n            ofd.Filter = \"所有图像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif;\" +\n                   \"*.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf|\" +\n                   \"位图( *.bmp; *.jpg; *.png;...) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico|\" +\n                   \"矢量图( *.wmf; *.eps; *.emf;...) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf\";\n            ofd.ShowHelp = true;\n            ofd.Title = \"打开图像文件\";\n            if (ofd.ShowDialog() == DialogResult.OK)\n            {\n                curFileName = ofd.FileName;\n                try\n                {\n                    curBitmap = (Bitmap)System.Drawing.Image.FromFile(curFileName);\n                    //srcBitmap = new Bitmap(curBitmap);\n                }\n                catch (Exception exp)\n                { MessageBox.Show(exp.Message); }\n            }\n        }\n\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            OpenFile();\n\n            if(curBitmap != null)\n            {\n                skinPictureBox1.Image = (Image)curBitmap;\n            }\n\n        }\n\n        private void FilterForm_Load(object sender, EventArgs e)\n        {\n            skinComboBox1.SelectedIndex = 11;\n        }\n\n        private void skinButton3_Click(object sender, EventArgs e)\n        {\n            this.Close();\n        }\n\n        private void skinButton2_Click(object sender, EventArgs e)\n        {\n            filterId = Convert.ToInt32(skinComboBox1.SelectedIndex)+1;\n\n            if (curBitmap != null)\n            {\n                this.DialogResult = DialogResult.OK; \n                this.Close();     \n            }\n            else\n            {\n                MessageForm msgForm = new MessageForm(\"请选择模板！\");\n                msgForm.Show();                       \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/FilterForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Form1.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));\n            this.label1 = new System.Windows.Forms.Label();\n            this.menuStrip1 = new System.Windows.Forms.MenuStrip();\n            this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.打开ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\n            this.保存ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator133 = new System.Windows.Forms.ToolStripSeparator();\n            this.恢复原图ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.基本变换ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.图像变换ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.图像旋转ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像缩放ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像翻转ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.水平翻转ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator134 = new System.Windows.Forms.ToolStripSeparator();\n            this.垂直翻转ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像调整ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.自动色调ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();\n            this.自动对比度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();\n            this.色调均化ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();\n            this.亮度对比度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();\n            this.色阶ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();\n            this.色相饱和度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();\n            this.色彩平衡ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();\n            this.通道混合器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator();\n            this.反相ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator19 = new System.Windows.Forms.ToolStripSeparator();\n            this.色调分离ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator();\n            this.阈值ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator21 = new System.Windows.Forms.ToolStripSeparator();\n            this.去色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator22 = new System.Windows.Forms.ToolStripSeparator();\n            this.高光阴影调节ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator23 = new System.Windows.Forms.ToolStripSeparator();\n            this.曝光调节ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator24 = new System.Windows.Forms.ToolStripSeparator();\n            this.色温调节ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator25 = new System.Windows.Forms.ToolStripSeparator();\n            this.黑白ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator();\n            this.gamma调节ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator36 = new System.Windows.Forms.ToolStripSeparator();\n            this.自然饱和度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();\n            this.风格化ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.查找边缘ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator26 = new System.Windows.Forms.ToolStripSeparator();\n            this.浮雕效果ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator27 = new System.Windows.Forms.ToolStripSeparator();\n            this.扩散ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator28 = new System.Windows.Forms.ToolStripSeparator();\n            this.曝光过度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.动感模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator30 = new System.Windows.Forms.ToolStripSeparator();\n            this.均值模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator31 = new System.Windows.Forms.ToolStripSeparator();\n            this.高斯模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator32 = new System.Windows.Forms.ToolStripSeparator();\n            this.旋转模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator33 = new System.Windows.Forms.ToolStripSeparator();\n            this.缩放模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator29 = new System.Windows.Forms.ToolStripSeparator();\n            this.表面模糊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator34 = new System.Windows.Forms.ToolStripSeparator();\n            this.平均ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator156 = new System.Windows.Forms.ToolStripSeparator();\n            this.中间色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator155 = new System.Windows.Forms.ToolStripSeparator();\n            this.最大值ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator154 = new System.Windows.Forms.ToolStripSeparator();\n            this.最小值ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator157 = new System.Windows.Forms.ToolStripSeparator();\n            this.smartBlurToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator37 = new System.Windows.Forms.ToolStripSeparator();\n            this.anisotropicFilterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();\n            this.像素化ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.马赛克ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator35 = new System.Windows.Forms.ToolStripSeparator();\n            this.碎片ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像锐化ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.uSM锐化ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();\n            this.高反差保留ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator135 = new System.Windows.Forms.ToolStripSeparator();\n            this.直方图ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator158 = new System.Windows.Forms.ToolStripSeparator();\n            this.图像变形ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator159 = new System.Windows.Forms.ToolStripSeparator();\n            this.waveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator38 = new System.Windows.Forms.ToolStripSeparator();\n            this.置换ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.panel2 = new System.Windows.Forms.Panel();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();\n            this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();\n            this.statusStrip1 = new System.Windows.Forms.StatusStrip();\n            this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel();\n            this.噪声ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\n            this.toolStripSeparator39 = new System.Windows.Forms.ToolStripSeparator();\n            this.menuStrip1.SuspendLayout();\n            this.panel2.SuspendLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.statusStrip1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // label1\n            // \n            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));\n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(10, 566);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(365, 12);\n            this.label1.TabIndex = 18;\n            this.label1.Text = \"我们提供PC/Android/IOS平台通用图像处理代码，更多下载请访问：\";\n            // \n            // menuStrip1\n            // \n            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.文件ToolStripMenuItem,\n            this.基本变换ToolStripMenuItem});\n            this.menuStrip1.Location = new System.Drawing.Point(4, 32);\n            this.menuStrip1.Name = \"menuStrip1\";\n            this.menuStrip1.Size = new System.Drawing.Size(810, 25);\n            this.menuStrip1.TabIndex = 19;\n            this.menuStrip1.Text = \"menuStrip1\";\n            // \n            // 文件ToolStripMenuItem\n            // \n            this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.打开ToolStripMenuItem,\n            this.toolStripSeparator1,\n            this.保存ToolStripMenuItem,\n            this.toolStripSeparator133,\n            this.恢复原图ToolStripMenuItem});\n            this.文件ToolStripMenuItem.Name = \"文件ToolStripMenuItem\";\n            this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);\n            this.文件ToolStripMenuItem.Text = \"文件\";\n            // \n            // 打开ToolStripMenuItem\n            // \n            this.打开ToolStripMenuItem.Name = \"打开ToolStripMenuItem\";\n            this.打开ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.打开ToolStripMenuItem.Text = \"打开\";\n            this.打开ToolStripMenuItem.Click += new System.EventHandler(this.打开ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator1\n            // \n            this.toolStripSeparator1.Name = \"toolStripSeparator1\";\n            this.toolStripSeparator1.Size = new System.Drawing.Size(121, 6);\n            // \n            // 保存ToolStripMenuItem\n            // \n            this.保存ToolStripMenuItem.Name = \"保存ToolStripMenuItem\";\n            this.保存ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.保存ToolStripMenuItem.Text = \"保存\";\n            this.保存ToolStripMenuItem.Click += new System.EventHandler(this.保存ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator133\n            // \n            this.toolStripSeparator133.Name = \"toolStripSeparator133\";\n            this.toolStripSeparator133.Size = new System.Drawing.Size(121, 6);\n            // \n            // 恢复原图ToolStripMenuItem\n            // \n            this.恢复原图ToolStripMenuItem.Name = \"恢复原图ToolStripMenuItem\";\n            this.恢复原图ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.恢复原图ToolStripMenuItem.Text = \"恢复原图\";\n            this.恢复原图ToolStripMenuItem.Click += new System.EventHandler(this.恢复原图ToolStripMenuItem_Click);\n            // \n            // 基本变换ToolStripMenuItem\n            // \n            this.基本变换ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.图像变换ToolStripMenuItem,\n            this.toolStripSeparator3,\n            this.图像调整ToolStripMenuItem,\n            this.toolStripSeparator4,\n            this.风格化ToolStripMenuItem,\n            this.toolStripSeparator5,\n            this.图像模糊ToolStripMenuItem,\n            this.toolStripSeparator6,\n            this.像素化ToolStripMenuItem,\n            this.toolStripSeparator8,\n            this.图像锐化ToolStripMenuItem,\n            this.toolStripSeparator9,\n            this.高反差保留ToolStripMenuItem,\n            this.toolStripSeparator135,\n            this.直方图ToolStripMenuItem,\n            this.toolStripSeparator158,\n            this.图像变形ToolStripMenuItem});\n            this.基本变换ToolStripMenuItem.Name = \"基本变换ToolStripMenuItem\";\n            this.基本变换ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);\n            this.基本变换ToolStripMenuItem.Text = \"图像\";\n            // \n            // 图像变换ToolStripMenuItem\n            // \n            this.图像变换ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.图像旋转ToolStripMenuItem,\n            this.toolStripSeparator2,\n            this.图像缩放ToolStripMenuItem,\n            this.toolStripSeparator10,\n            this.图像翻转ToolStripMenuItem});\n            this.图像变换ToolStripMenuItem.Name = \"图像变换ToolStripMenuItem\";\n            this.图像变换ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.图像变换ToolStripMenuItem.Text = \"图像变换\";\n            // \n            // 图像旋转ToolStripMenuItem\n            // \n            this.图像旋转ToolStripMenuItem.Name = \"图像旋转ToolStripMenuItem\";\n            this.图像旋转ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.图像旋转ToolStripMenuItem.Text = \"图像旋转\";\n            this.图像旋转ToolStripMenuItem.Click += new System.EventHandler(this.图像旋转ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator2\n            // \n            this.toolStripSeparator2.Name = \"toolStripSeparator2\";\n            this.toolStripSeparator2.Size = new System.Drawing.Size(121, 6);\n            // \n            // 图像缩放ToolStripMenuItem\n            // \n            this.图像缩放ToolStripMenuItem.Name = \"图像缩放ToolStripMenuItem\";\n            this.图像缩放ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.图像缩放ToolStripMenuItem.Text = \"图像缩放\";\n            this.图像缩放ToolStripMenuItem.Click += new System.EventHandler(this.图像缩放ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator10\n            // \n            this.toolStripSeparator10.Name = \"toolStripSeparator10\";\n            this.toolStripSeparator10.Size = new System.Drawing.Size(121, 6);\n            // \n            // 图像翻转ToolStripMenuItem\n            // \n            this.图像翻转ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.水平翻转ToolStripMenuItem,\n            this.toolStripSeparator134,\n            this.垂直翻转ToolStripMenuItem});\n            this.图像翻转ToolStripMenuItem.Name = \"图像翻转ToolStripMenuItem\";\n            this.图像翻转ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.图像翻转ToolStripMenuItem.Text = \"图像翻转\";\n            // \n            // 水平翻转ToolStripMenuItem\n            // \n            this.水平翻转ToolStripMenuItem.Name = \"水平翻转ToolStripMenuItem\";\n            this.水平翻转ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.水平翻转ToolStripMenuItem.Text = \"水平翻转\";\n            this.水平翻转ToolStripMenuItem.Click += new System.EventHandler(this.水平翻转ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator134\n            // \n            this.toolStripSeparator134.Name = \"toolStripSeparator134\";\n            this.toolStripSeparator134.Size = new System.Drawing.Size(121, 6);\n            // \n            // 垂直翻转ToolStripMenuItem\n            // \n            this.垂直翻转ToolStripMenuItem.Name = \"垂直翻转ToolStripMenuItem\";\n            this.垂直翻转ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);\n            this.垂直翻转ToolStripMenuItem.Text = \"垂直翻转\";\n            this.垂直翻转ToolStripMenuItem.Click += new System.EventHandler(this.垂直翻转ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator3\n            // \n            this.toolStripSeparator3.Name = \"toolStripSeparator3\";\n            this.toolStripSeparator3.Size = new System.Drawing.Size(149, 6);\n            // \n            // 图像调整ToolStripMenuItem\n            // \n            this.图像调整ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.自动色调ToolStripMenuItem,\n            this.toolStripSeparator11,\n            this.自动对比度ToolStripMenuItem,\n            this.toolStripSeparator12,\n            this.色调均化ToolStripMenuItem,\n            this.toolStripSeparator13,\n            this.亮度对比度ToolStripMenuItem,\n            this.toolStripSeparator14,\n            this.色阶ToolStripMenuItem,\n            this.toolStripSeparator15,\n            this.色相饱和度ToolStripMenuItem,\n            this.toolStripSeparator16,\n            this.色彩平衡ToolStripMenuItem,\n            this.toolStripSeparator7,\n            this.通道混合器ToolStripMenuItem,\n            this.toolStripSeparator17,\n            this.反相ToolStripMenuItem,\n            this.toolStripSeparator19,\n            this.色调分离ToolStripMenuItem,\n            this.toolStripSeparator20,\n            this.阈值ToolStripMenuItem,\n            this.toolStripSeparator21,\n            this.去色ToolStripMenuItem,\n            this.toolStripSeparator22,\n            this.高光阴影调节ToolStripMenuItem,\n            this.toolStripSeparator23,\n            this.曝光调节ToolStripMenuItem,\n            this.toolStripSeparator24,\n            this.色温调节ToolStripMenuItem,\n            this.toolStripSeparator25,\n            this.黑白ToolStripMenuItem1,\n            this.toolStripSeparator18,\n            this.gamma调节ToolStripMenuItem,\n            this.toolStripSeparator36,\n            this.自然饱和度ToolStripMenuItem});\n            this.图像调整ToolStripMenuItem.Name = \"图像调整ToolStripMenuItem\";\n            this.图像调整ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.图像调整ToolStripMenuItem.Text = \"图像调整\";\n            // \n            // 自动色调ToolStripMenuItem\n            // \n            this.自动色调ToolStripMenuItem.Name = \"自动色调ToolStripMenuItem\";\n            this.自动色调ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.自动色调ToolStripMenuItem.Text = \"自动色调\";\n            this.自动色调ToolStripMenuItem.Click += new System.EventHandler(this.自动色调ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator11\n            // \n            this.toolStripSeparator11.Name = \"toolStripSeparator11\";\n            this.toolStripSeparator11.Size = new System.Drawing.Size(150, 6);\n            // \n            // 自动对比度ToolStripMenuItem\n            // \n            this.自动对比度ToolStripMenuItem.Name = \"自动对比度ToolStripMenuItem\";\n            this.自动对比度ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.自动对比度ToolStripMenuItem.Text = \"自动对比度\";\n            this.自动对比度ToolStripMenuItem.Click += new System.EventHandler(this.自动对比度ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator12\n            // \n            this.toolStripSeparator12.Name = \"toolStripSeparator12\";\n            this.toolStripSeparator12.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色调均化ToolStripMenuItem\n            // \n            this.色调均化ToolStripMenuItem.Name = \"色调均化ToolStripMenuItem\";\n            this.色调均化ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色调均化ToolStripMenuItem.Text = \"色调均化\";\n            this.色调均化ToolStripMenuItem.Click += new System.EventHandler(this.色调均化ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator13\n            // \n            this.toolStripSeparator13.Name = \"toolStripSeparator13\";\n            this.toolStripSeparator13.Size = new System.Drawing.Size(150, 6);\n            // \n            // 亮度对比度ToolStripMenuItem\n            // \n            this.亮度对比度ToolStripMenuItem.Name = \"亮度对比度ToolStripMenuItem\";\n            this.亮度对比度ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.亮度对比度ToolStripMenuItem.Text = \"亮度/对比度\";\n            this.亮度对比度ToolStripMenuItem.Click += new System.EventHandler(this.亮度对比度ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator14\n            // \n            this.toolStripSeparator14.Name = \"toolStripSeparator14\";\n            this.toolStripSeparator14.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色阶ToolStripMenuItem\n            // \n            this.色阶ToolStripMenuItem.Name = \"色阶ToolStripMenuItem\";\n            this.色阶ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色阶ToolStripMenuItem.Text = \"色阶\";\n            this.色阶ToolStripMenuItem.Click += new System.EventHandler(this.色阶ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator15\n            // \n            this.toolStripSeparator15.Name = \"toolStripSeparator15\";\n            this.toolStripSeparator15.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色相饱和度ToolStripMenuItem\n            // \n            this.色相饱和度ToolStripMenuItem.Name = \"色相饱和度ToolStripMenuItem\";\n            this.色相饱和度ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色相饱和度ToolStripMenuItem.Text = \"色相/饱和度\";\n            this.色相饱和度ToolStripMenuItem.Click += new System.EventHandler(this.色相饱和度ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator16\n            // \n            this.toolStripSeparator16.Name = \"toolStripSeparator16\";\n            this.toolStripSeparator16.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色彩平衡ToolStripMenuItem\n            // \n            this.色彩平衡ToolStripMenuItem.Name = \"色彩平衡ToolStripMenuItem\";\n            this.色彩平衡ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色彩平衡ToolStripMenuItem.Text = \"色彩平衡\";\n            this.色彩平衡ToolStripMenuItem.Click += new System.EventHandler(this.色彩平衡ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator7\n            // \n            this.toolStripSeparator7.Name = \"toolStripSeparator7\";\n            this.toolStripSeparator7.Size = new System.Drawing.Size(150, 6);\n            // \n            // 通道混合器ToolStripMenuItem\n            // \n            this.通道混合器ToolStripMenuItem.Name = \"通道混合器ToolStripMenuItem\";\n            this.通道混合器ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.通道混合器ToolStripMenuItem.Text = \"通道混合器\";\n            this.通道混合器ToolStripMenuItem.Click += new System.EventHandler(this.通道混合器ToolStripMenuItem_Click_1);\n            // \n            // toolStripSeparator17\n            // \n            this.toolStripSeparator17.Name = \"toolStripSeparator17\";\n            this.toolStripSeparator17.Size = new System.Drawing.Size(150, 6);\n            // \n            // 反相ToolStripMenuItem\n            // \n            this.反相ToolStripMenuItem.Name = \"反相ToolStripMenuItem\";\n            this.反相ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.反相ToolStripMenuItem.Text = \"反相\";\n            this.反相ToolStripMenuItem.Click += new System.EventHandler(this.反相ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator19\n            // \n            this.toolStripSeparator19.Name = \"toolStripSeparator19\";\n            this.toolStripSeparator19.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色调分离ToolStripMenuItem\n            // \n            this.色调分离ToolStripMenuItem.Name = \"色调分离ToolStripMenuItem\";\n            this.色调分离ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色调分离ToolStripMenuItem.Text = \"色调分离\";\n            this.色调分离ToolStripMenuItem.Click += new System.EventHandler(this.色调分离ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator20\n            // \n            this.toolStripSeparator20.Name = \"toolStripSeparator20\";\n            this.toolStripSeparator20.Size = new System.Drawing.Size(150, 6);\n            // \n            // 阈值ToolStripMenuItem\n            // \n            this.阈值ToolStripMenuItem.Name = \"阈值ToolStripMenuItem\";\n            this.阈值ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.阈值ToolStripMenuItem.Text = \"阈值\";\n            this.阈值ToolStripMenuItem.Click += new System.EventHandler(this.阈值ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator21\n            // \n            this.toolStripSeparator21.Name = \"toolStripSeparator21\";\n            this.toolStripSeparator21.Size = new System.Drawing.Size(150, 6);\n            // \n            // 去色ToolStripMenuItem\n            // \n            this.去色ToolStripMenuItem.Name = \"去色ToolStripMenuItem\";\n            this.去色ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.去色ToolStripMenuItem.Text = \"去色\";\n            this.去色ToolStripMenuItem.Click += new System.EventHandler(this.去色ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator22\n            // \n            this.toolStripSeparator22.Name = \"toolStripSeparator22\";\n            this.toolStripSeparator22.Size = new System.Drawing.Size(150, 6);\n            // \n            // 高光阴影调节ToolStripMenuItem\n            // \n            this.高光阴影调节ToolStripMenuItem.Name = \"高光阴影调节ToolStripMenuItem\";\n            this.高光阴影调节ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.高光阴影调节ToolStripMenuItem.Text = \"高光/阴影调节\";\n            this.高光阴影调节ToolStripMenuItem.Click += new System.EventHandler(this.高光阴影调节ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator23\n            // \n            this.toolStripSeparator23.Name = \"toolStripSeparator23\";\n            this.toolStripSeparator23.Size = new System.Drawing.Size(150, 6);\n            // \n            // 曝光调节ToolStripMenuItem\n            // \n            this.曝光调节ToolStripMenuItem.Name = \"曝光调节ToolStripMenuItem\";\n            this.曝光调节ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.曝光调节ToolStripMenuItem.Text = \"曝光调节\";\n            this.曝光调节ToolStripMenuItem.Click += new System.EventHandler(this.曝光调节ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator24\n            // \n            this.toolStripSeparator24.Name = \"toolStripSeparator24\";\n            this.toolStripSeparator24.Size = new System.Drawing.Size(150, 6);\n            // \n            // 色温调节ToolStripMenuItem\n            // \n            this.色温调节ToolStripMenuItem.Name = \"色温调节ToolStripMenuItem\";\n            this.色温调节ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.色温调节ToolStripMenuItem.Text = \"色温调节\";\n            this.色温调节ToolStripMenuItem.Click += new System.EventHandler(this.色温调节ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator25\n            // \n            this.toolStripSeparator25.Name = \"toolStripSeparator25\";\n            this.toolStripSeparator25.Size = new System.Drawing.Size(150, 6);\n            // \n            // 黑白ToolStripMenuItem1\n            // \n            this.黑白ToolStripMenuItem1.Name = \"黑白ToolStripMenuItem1\";\n            this.黑白ToolStripMenuItem1.Size = new System.Drawing.Size(153, 22);\n            this.黑白ToolStripMenuItem1.Text = \"黑白\";\n            this.黑白ToolStripMenuItem1.Click += new System.EventHandler(this.黑白ToolStripMenuItem1_Click);\n            // \n            // toolStripSeparator18\n            // \n            this.toolStripSeparator18.Name = \"toolStripSeparator18\";\n            this.toolStripSeparator18.Size = new System.Drawing.Size(150, 6);\n            // \n            // gamma调节ToolStripMenuItem\n            // \n            this.gamma调节ToolStripMenuItem.Name = \"gamma调节ToolStripMenuItem\";\n            this.gamma调节ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.gamma调节ToolStripMenuItem.Text = \"Gamma调节\";\n            this.gamma调节ToolStripMenuItem.Click += new System.EventHandler(this.gamma调节ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator36\n            // \n            this.toolStripSeparator36.Name = \"toolStripSeparator36\";\n            this.toolStripSeparator36.Size = new System.Drawing.Size(150, 6);\n            // \n            // 自然饱和度ToolStripMenuItem\n            // \n            this.自然饱和度ToolStripMenuItem.Name = \"自然饱和度ToolStripMenuItem\";\n            this.自然饱和度ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);\n            this.自然饱和度ToolStripMenuItem.Text = \"自然饱和度\";\n            this.自然饱和度ToolStripMenuItem.Click += new System.EventHandler(this.自然饱和度ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator4\n            // \n            this.toolStripSeparator4.Name = \"toolStripSeparator4\";\n            this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6);\n            // \n            // 风格化ToolStripMenuItem\n            // \n            this.风格化ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.查找边缘ToolStripMenuItem,\n            this.toolStripSeparator26,\n            this.浮雕效果ToolStripMenuItem,\n            this.toolStripSeparator27,\n            this.扩散ToolStripMenuItem,\n            this.toolStripSeparator28,\n            this.曝光过度ToolStripMenuItem});\n            this.风格化ToolStripMenuItem.Name = \"风格化ToolStripMenuItem\";\n            this.风格化ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.风格化ToolStripMenuItem.Text = \"风格化\";\n            // \n            // 查找边缘ToolStripMenuItem\n            // \n            this.查找边缘ToolStripMenuItem.Name = \"查找边缘ToolStripMenuItem\";\n            this.查找边缘ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.查找边缘ToolStripMenuItem.Text = \"查找边缘\";\n            this.查找边缘ToolStripMenuItem.Click += new System.EventHandler(this.查找边缘ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator26\n            // \n            this.toolStripSeparator26.Name = \"toolStripSeparator26\";\n            this.toolStripSeparator26.Size = new System.Drawing.Size(149, 6);\n            // \n            // 浮雕效果ToolStripMenuItem\n            // \n            this.浮雕效果ToolStripMenuItem.Name = \"浮雕效果ToolStripMenuItem\";\n            this.浮雕效果ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.浮雕效果ToolStripMenuItem.Text = \"浮雕效果\";\n            this.浮雕效果ToolStripMenuItem.Click += new System.EventHandler(this.浮雕效果ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator27\n            // \n            this.toolStripSeparator27.Name = \"toolStripSeparator27\";\n            this.toolStripSeparator27.Size = new System.Drawing.Size(149, 6);\n            // \n            // 扩散ToolStripMenuItem\n            // \n            this.扩散ToolStripMenuItem.Name = \"扩散ToolStripMenuItem\";\n            this.扩散ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.扩散ToolStripMenuItem.Text = \"扩散\";\n            this.扩散ToolStripMenuItem.Click += new System.EventHandler(this.扩散ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator28\n            // \n            this.toolStripSeparator28.Name = \"toolStripSeparator28\";\n            this.toolStripSeparator28.Size = new System.Drawing.Size(149, 6);\n            // \n            // 曝光过度ToolStripMenuItem\n            // \n            this.曝光过度ToolStripMenuItem.Name = \"曝光过度ToolStripMenuItem\";\n            this.曝光过度ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.曝光过度ToolStripMenuItem.Text = \"曝光过度\";\n            this.曝光过度ToolStripMenuItem.Click += new System.EventHandler(this.曝光过度ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator5\n            // \n            this.toolStripSeparator5.Name = \"toolStripSeparator5\";\n            this.toolStripSeparator5.Size = new System.Drawing.Size(149, 6);\n            // \n            // 图像模糊ToolStripMenuItem\n            // \n            this.图像模糊ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.动感模糊ToolStripMenuItem,\n            this.toolStripSeparator30,\n            this.均值模糊ToolStripMenuItem,\n            this.toolStripSeparator31,\n            this.高斯模糊ToolStripMenuItem,\n            this.toolStripSeparator32,\n            this.旋转模糊ToolStripMenuItem,\n            this.toolStripSeparator33,\n            this.缩放模糊ToolStripMenuItem,\n            this.toolStripSeparator29,\n            this.表面模糊ToolStripMenuItem,\n            this.toolStripSeparator34,\n            this.平均ToolStripMenuItem,\n            this.toolStripSeparator156,\n            this.中间色ToolStripMenuItem,\n            this.toolStripSeparator155,\n            this.最大值ToolStripMenuItem,\n            this.toolStripSeparator154,\n            this.最小值ToolStripMenuItem,\n            this.toolStripSeparator157,\n            this.smartBlurToolStripMenuItem,\n            this.toolStripSeparator37,\n            this.anisotropicFilterToolStripMenuItem});\n            this.图像模糊ToolStripMenuItem.Name = \"图像模糊ToolStripMenuItem\";\n            this.图像模糊ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.图像模糊ToolStripMenuItem.Text = \"图像模糊\";\n            // \n            // 动感模糊ToolStripMenuItem\n            // \n            this.动感模糊ToolStripMenuItem.Name = \"动感模糊ToolStripMenuItem\";\n            this.动感模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.动感模糊ToolStripMenuItem.Text = \"动感模糊\";\n            this.动感模糊ToolStripMenuItem.Click += new System.EventHandler(this.动感模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator30\n            // \n            this.toolStripSeparator30.Name = \"toolStripSeparator30\";\n            this.toolStripSeparator30.Size = new System.Drawing.Size(167, 6);\n            // \n            // 均值模糊ToolStripMenuItem\n            // \n            this.均值模糊ToolStripMenuItem.Name = \"均值模糊ToolStripMenuItem\";\n            this.均值模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.均值模糊ToolStripMenuItem.Text = \"均值模糊\";\n            this.均值模糊ToolStripMenuItem.Click += new System.EventHandler(this.均值模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator31\n            // \n            this.toolStripSeparator31.Name = \"toolStripSeparator31\";\n            this.toolStripSeparator31.Size = new System.Drawing.Size(167, 6);\n            // \n            // 高斯模糊ToolStripMenuItem\n            // \n            this.高斯模糊ToolStripMenuItem.Name = \"高斯模糊ToolStripMenuItem\";\n            this.高斯模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.高斯模糊ToolStripMenuItem.Text = \"高斯模糊\";\n            this.高斯模糊ToolStripMenuItem.Click += new System.EventHandler(this.高斯模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator32\n            // \n            this.toolStripSeparator32.Name = \"toolStripSeparator32\";\n            this.toolStripSeparator32.Size = new System.Drawing.Size(167, 6);\n            // \n            // 旋转模糊ToolStripMenuItem\n            // \n            this.旋转模糊ToolStripMenuItem.Name = \"旋转模糊ToolStripMenuItem\";\n            this.旋转模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.旋转模糊ToolStripMenuItem.Text = \"旋转模糊\";\n            this.旋转模糊ToolStripMenuItem.Click += new System.EventHandler(this.旋转模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator33\n            // \n            this.toolStripSeparator33.Name = \"toolStripSeparator33\";\n            this.toolStripSeparator33.Size = new System.Drawing.Size(167, 6);\n            // \n            // 缩放模糊ToolStripMenuItem\n            // \n            this.缩放模糊ToolStripMenuItem.Name = \"缩放模糊ToolStripMenuItem\";\n            this.缩放模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.缩放模糊ToolStripMenuItem.Text = \"缩放模糊\";\n            this.缩放模糊ToolStripMenuItem.Click += new System.EventHandler(this.缩放模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator29\n            // \n            this.toolStripSeparator29.Name = \"toolStripSeparator29\";\n            this.toolStripSeparator29.Size = new System.Drawing.Size(167, 6);\n            // \n            // 表面模糊ToolStripMenuItem\n            // \n            this.表面模糊ToolStripMenuItem.Name = \"表面模糊ToolStripMenuItem\";\n            this.表面模糊ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.表面模糊ToolStripMenuItem.Text = \"表面模糊\";\n            this.表面模糊ToolStripMenuItem.Click += new System.EventHandler(this.表面模糊ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator34\n            // \n            this.toolStripSeparator34.Name = \"toolStripSeparator34\";\n            this.toolStripSeparator34.Size = new System.Drawing.Size(167, 6);\n            // \n            // 平均ToolStripMenuItem\n            // \n            this.平均ToolStripMenuItem.Name = \"平均ToolStripMenuItem\";\n            this.平均ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.平均ToolStripMenuItem.Text = \"平均\";\n            this.平均ToolStripMenuItem.Click += new System.EventHandler(this.平均ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator156\n            // \n            this.toolStripSeparator156.Name = \"toolStripSeparator156\";\n            this.toolStripSeparator156.Size = new System.Drawing.Size(167, 6);\n            // \n            // 中间色ToolStripMenuItem\n            // \n            this.中间色ToolStripMenuItem.Name = \"中间色ToolStripMenuItem\";\n            this.中间色ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.中间色ToolStripMenuItem.Text = \"中间色\";\n            this.中间色ToolStripMenuItem.Click += new System.EventHandler(this.中间色ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator155\n            // \n            this.toolStripSeparator155.Name = \"toolStripSeparator155\";\n            this.toolStripSeparator155.Size = new System.Drawing.Size(167, 6);\n            // \n            // 最大值ToolStripMenuItem\n            // \n            this.最大值ToolStripMenuItem.Name = \"最大值ToolStripMenuItem\";\n            this.最大值ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.最大值ToolStripMenuItem.Text = \"最大值\";\n            this.最大值ToolStripMenuItem.Click += new System.EventHandler(this.最大值ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator154\n            // \n            this.toolStripSeparator154.Name = \"toolStripSeparator154\";\n            this.toolStripSeparator154.Size = new System.Drawing.Size(167, 6);\n            // \n            // 最小值ToolStripMenuItem\n            // \n            this.最小值ToolStripMenuItem.Name = \"最小值ToolStripMenuItem\";\n            this.最小值ToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.最小值ToolStripMenuItem.Text = \"最小值\";\n            this.最小值ToolStripMenuItem.Click += new System.EventHandler(this.最小值ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator157\n            // \n            this.toolStripSeparator157.Name = \"toolStripSeparator157\";\n            this.toolStripSeparator157.Size = new System.Drawing.Size(167, 6);\n            // \n            // smartBlurToolStripMenuItem\n            // \n            this.smartBlurToolStripMenuItem.Name = \"smartBlurToolStripMenuItem\";\n            this.smartBlurToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.smartBlurToolStripMenuItem.Text = \"SmartBlur\";\n            this.smartBlurToolStripMenuItem.Click += new System.EventHandler(this.smartBlurToolStripMenuItem_Click);\n            // \n            // toolStripSeparator37\n            // \n            this.toolStripSeparator37.Name = \"toolStripSeparator37\";\n            this.toolStripSeparator37.Size = new System.Drawing.Size(167, 6);\n            // \n            // anisotropicFilterToolStripMenuItem\n            // \n            this.anisotropicFilterToolStripMenuItem.Name = \"anisotropicFilterToolStripMenuItem\";\n            this.anisotropicFilterToolStripMenuItem.Size = new System.Drawing.Size(170, 22);\n            this.anisotropicFilterToolStripMenuItem.Text = \"AnisotropicFilter\";\n            this.anisotropicFilterToolStripMenuItem.Click += new System.EventHandler(this.anisotropicFilterToolStripMenuItem_Click);\n            // \n            // toolStripSeparator6\n            // \n            this.toolStripSeparator6.Name = \"toolStripSeparator6\";\n            this.toolStripSeparator6.Size = new System.Drawing.Size(149, 6);\n            // \n            // 像素化ToolStripMenuItem\n            // \n            this.像素化ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.马赛克ToolStripMenuItem,\n            this.toolStripSeparator35,\n            this.碎片ToolStripMenuItem,\n            this.toolStripSeparator39,\n            this.噪声ToolStripMenuItem});\n            this.像素化ToolStripMenuItem.Name = \"像素化ToolStripMenuItem\";\n            this.像素化ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.像素化ToolStripMenuItem.Text = \"像素化\";\n            // \n            // 马赛克ToolStripMenuItem\n            // \n            this.马赛克ToolStripMenuItem.Name = \"马赛克ToolStripMenuItem\";\n            this.马赛克ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.马赛克ToolStripMenuItem.Text = \"马赛克\";\n            this.马赛克ToolStripMenuItem.Click += new System.EventHandler(this.马赛克ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator35\n            // \n            this.toolStripSeparator35.Name = \"toolStripSeparator35\";\n            this.toolStripSeparator35.Size = new System.Drawing.Size(149, 6);\n            // \n            // 碎片ToolStripMenuItem\n            // \n            this.碎片ToolStripMenuItem.Name = \"碎片ToolStripMenuItem\";\n            this.碎片ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.碎片ToolStripMenuItem.Text = \"碎片\";\n            this.碎片ToolStripMenuItem.Click += new System.EventHandler(this.碎片ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator8\n            // \n            this.toolStripSeparator8.Name = \"toolStripSeparator8\";\n            this.toolStripSeparator8.Size = new System.Drawing.Size(149, 6);\n            // \n            // 图像锐化ToolStripMenuItem\n            // \n            this.图像锐化ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.uSM锐化ToolStripMenuItem});\n            this.图像锐化ToolStripMenuItem.Name = \"图像锐化ToolStripMenuItem\";\n            this.图像锐化ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.图像锐化ToolStripMenuItem.Text = \"图像锐化\";\n            // \n            // uSM锐化ToolStripMenuItem\n            // \n            this.uSM锐化ToolStripMenuItem.Name = \"uSM锐化ToolStripMenuItem\";\n            this.uSM锐化ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.uSM锐化ToolStripMenuItem.Text = \"USM锐化\";\n            this.uSM锐化ToolStripMenuItem.Click += new System.EventHandler(this.uSM锐化ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator9\n            // \n            this.toolStripSeparator9.Name = \"toolStripSeparator9\";\n            this.toolStripSeparator9.Size = new System.Drawing.Size(149, 6);\n            // \n            // 高反差保留ToolStripMenuItem\n            // \n            this.高反差保留ToolStripMenuItem.Name = \"高反差保留ToolStripMenuItem\";\n            this.高反差保留ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.高反差保留ToolStripMenuItem.Text = \"高反差保留\";\n            this.高反差保留ToolStripMenuItem.Click += new System.EventHandler(this.高反差保留ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator135\n            // \n            this.toolStripSeparator135.Name = \"toolStripSeparator135\";\n            this.toolStripSeparator135.Size = new System.Drawing.Size(149, 6);\n            // \n            // 直方图ToolStripMenuItem\n            // \n            this.直方图ToolStripMenuItem.Name = \"直方图ToolStripMenuItem\";\n            this.直方图ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.直方图ToolStripMenuItem.Text = \"直方图\";\n            this.直方图ToolStripMenuItem.Click += new System.EventHandler(this.直方图ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator158\n            // \n            this.toolStripSeparator158.Name = \"toolStripSeparator158\";\n            this.toolStripSeparator158.Size = new System.Drawing.Size(149, 6);\n            // \n            // 图像变形ToolStripMenuItem\n            // \n            this.图像变形ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.toolStripSeparator159,\n            this.waveToolStripMenuItem,\n            this.toolStripSeparator38,\n            this.置换ToolStripMenuItem});\n            this.图像变形ToolStripMenuItem.Name = \"图像变形ToolStripMenuItem\";\n            this.图像变形ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.图像变形ToolStripMenuItem.Text = \"扭曲\";\n            // \n            // toolStripSeparator159\n            // \n            this.toolStripSeparator159.Name = \"toolStripSeparator159\";\n            this.toolStripSeparator159.Size = new System.Drawing.Size(105, 6);\n            // \n            // waveToolStripMenuItem\n            // \n            this.waveToolStripMenuItem.Name = \"waveToolStripMenuItem\";\n            this.waveToolStripMenuItem.Size = new System.Drawing.Size(108, 22);\n            this.waveToolStripMenuItem.Text = \"Wave\";\n            this.waveToolStripMenuItem.Click += new System.EventHandler(this.waveToolStripMenuItem_Click);\n            // \n            // toolStripSeparator38\n            // \n            this.toolStripSeparator38.Name = \"toolStripSeparator38\";\n            this.toolStripSeparator38.Size = new System.Drawing.Size(105, 6);\n            // \n            // 置换ToolStripMenuItem\n            // \n            this.置换ToolStripMenuItem.Name = \"置换ToolStripMenuItem\";\n            this.置换ToolStripMenuItem.Size = new System.Drawing.Size(108, 22);\n            this.置换ToolStripMenuItem.Text = \"置换\";\n            this.置换ToolStripMenuItem.Click += new System.EventHandler(this.置换ToolStripMenuItem_Click);\n            // \n            // panel2\n            // \n            this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\n                        | System.Windows.Forms.AnchorStyles.Left)\n                        | System.Windows.Forms.AnchorStyles.Right)));\n            this.panel2.Controls.Add(this.pictureBox1);\n            this.panel2.Location = new System.Drawing.Point(3, 60);\n            this.panel2.Name = \"panel2\";\n            this.panel2.Size = new System.Drawing.Size(813, 494);\n            this.panel2.TabIndex = 23;\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\n                        | System.Windows.Forms.AnchorStyles.Left)\n                        | System.Windows.Forms.AnchorStyles.Right)));\n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;\n            this.pictureBox1.Location = new System.Drawing.Point(3, 3);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(806, 491);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 21;\n            this.pictureBox1.TabStop = false;\n            this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);\n            this.pictureBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);\n            // \n            // toolStripStatusLabel1\n            // \n            this.toolStripStatusLabel1.BackColor = System.Drawing.Color.Transparent;\n            this.toolStripStatusLabel1.IsLink = true;\n            this.toolStripStatusLabel1.Name = \"toolStripStatusLabel1\";\n            this.toolStripStatusLabel1.Size = new System.Drawing.Size(53, 17);\n            this.toolStripStatusLabel1.Text = \"MyBlog\";\n            this.toolStripStatusLabel1.Click += new System.EventHandler(this.toolStripStatusLabel1_Click);\n            // \n            // toolStripStatusLabel2\n            // \n            this.toolStripStatusLabel2.BackColor = System.Drawing.Color.Transparent;\n            this.toolStripStatusLabel2.Name = \"toolStripStatusLabel2\";\n            this.toolStripStatusLabel2.Size = new System.Drawing.Size(84, 17);\n            this.toolStripStatusLabel2.Text = \"图像宽高:(0,0)\";\n            this.toolStripStatusLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\n            // \n            // statusStrip1\n            // \n            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.toolStripStatusLabel1,\n            this.toolStripStatusLabel2,\n            this.toolStripStatusLabel3});\n            this.statusStrip1.Location = new System.Drawing.Point(4, 557);\n            this.statusStrip1.Name = \"statusStrip1\";\n            this.statusStrip1.Size = new System.Drawing.Size(810, 22);\n            this.statusStrip1.TabIndex = 21;\n            this.statusStrip1.Text = \"statusStrip1\";\n            // \n            // toolStripStatusLabel3\n            // \n            this.toolStripStatusLabel3.BackColor = System.Drawing.Color.Transparent;\n            this.toolStripStatusLabel3.Name = \"toolStripStatusLabel3\";\n            this.toolStripStatusLabel3.Size = new System.Drawing.Size(92, 17);\n            this.toolStripStatusLabel3.Text = \"当前进度：完成\";\n            // \n            // 噪声ToolStripMenuItem\n            // \n            this.噪声ToolStripMenuItem.Name = \"噪声ToolStripMenuItem\";\n            this.噪声ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\n            this.噪声ToolStripMenuItem.Text = \"噪声\";\n            this.噪声ToolStripMenuItem.Click += new System.EventHandler(this.噪声ToolStripMenuItem_Click);\n            // \n            // toolStripSeparator39\n            // \n            this.toolStripSeparator39.Name = \"toolStripSeparator39\";\n            this.toolStripSeparator39.Size = new System.Drawing.Size(149, 6);\n            // \n            // Form1\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.BackColor = System.Drawing.Color.Silver;\n            this.ClientSize = new System.Drawing.Size(818, 583);\n            this.Controls.Add(this.panel2);\n            this.Controls.Add(this.statusStrip1);\n            this.Controls.Add(this.label1);\n            this.Controls.Add(this.menuStrip1);\n            this.Icon = ((System.Drawing.Icon)(resources.GetObject(\"$this.Icon\")));\n            this.MainMenuStrip = this.menuStrip1;\n            this.Name = \"Form1\";\n            this.Text = \"ZPHOTO\";\n            this.TitleCenter = false;\n            this.menuStrip1.ResumeLayout(false);\n            this.menuStrip1.PerformLayout();\n            this.panel2.ResumeLayout(false);\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.statusStrip1.ResumeLayout(false);\n            this.statusStrip1.PerformLayout();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.MenuStrip menuStrip1;\n        private System.Windows.Forms.ToolStripMenuItem 文件ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 打开ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\n        private System.Windows.Forms.ToolStripMenuItem 保存ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 基本变换ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 图像变换ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 图像旋转ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;\n        private System.Windows.Forms.ToolStripMenuItem 图像缩放ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;\n        private System.Windows.Forms.ToolStripMenuItem 图像翻转ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;\n        private System.Windows.Forms.ToolStripMenuItem 图像调整ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 自动色调ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;\n        private System.Windows.Forms.ToolStripMenuItem 自动对比度ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;\n        private System.Windows.Forms.ToolStripMenuItem 色调均化ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;\n        private System.Windows.Forms.ToolStripMenuItem 亮度对比度ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;\n        private System.Windows.Forms.ToolStripMenuItem 色阶ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;\n        private System.Windows.Forms.ToolStripMenuItem 色相饱和度ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;\n        private System.Windows.Forms.ToolStripMenuItem 色彩平衡ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator17;\n        private System.Windows.Forms.ToolStripMenuItem 反相ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator19;\n        private System.Windows.Forms.ToolStripMenuItem 色调分离ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator20;\n        private System.Windows.Forms.ToolStripMenuItem 阈值ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator21;\n        private System.Windows.Forms.ToolStripMenuItem 去色ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator22;\n        private System.Windows.Forms.ToolStripMenuItem 高光阴影调节ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator23;\n        private System.Windows.Forms.ToolStripMenuItem 曝光调节ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator24;\n        private System.Windows.Forms.ToolStripMenuItem 色温调节ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator25;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;\n        private System.Windows.Forms.ToolStripMenuItem 风格化ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 查找边缘ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator26;\n        private System.Windows.Forms.ToolStripMenuItem 浮雕效果ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator27;\n        private System.Windows.Forms.ToolStripMenuItem 扩散ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator28;\n        private System.Windows.Forms.ToolStripMenuItem 曝光过度ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;\n        private System.Windows.Forms.ToolStripMenuItem 图像模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 表面模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator29;\n        private System.Windows.Forms.ToolStripMenuItem 动感模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator30;\n        private System.Windows.Forms.ToolStripMenuItem 均值模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator31;\n        private System.Windows.Forms.ToolStripMenuItem 高斯模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator32;\n        private System.Windows.Forms.ToolStripMenuItem 旋转模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator33;\n        private System.Windows.Forms.ToolStripMenuItem 缩放模糊ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator34;\n        private System.Windows.Forms.ToolStripMenuItem 平均ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;\n        private System.Windows.Forms.ToolStripMenuItem 像素化ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 马赛克ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator35;\n        private System.Windows.Forms.ToolStripMenuItem 碎片ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;\n        private System.Windows.Forms.ToolStripMenuItem 图像锐化ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem uSM锐化ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;\n        private System.Windows.Forms.ToolStripMenuItem 高反差保留ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator133;\n        private System.Windows.Forms.ToolStripMenuItem 恢复原图ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 水平翻转ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator134;\n        private System.Windows.Forms.ToolStripMenuItem 垂直翻转ToolStripMenuItem;\n        private System.Windows.Forms.Panel panel2;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;\n        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;\n        private System.Windows.Forms.StatusStrip statusStrip1;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator135;\n        private System.Windows.Forms.ToolStripMenuItem 直方图ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 通道混合器ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;\n        private System.Windows.Forms.ToolStripMenuItem 黑白ToolStripMenuItem1;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator18;\n        private System.Windows.Forms.ToolStripMenuItem gamma调节ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator156;\n        private System.Windows.Forms.ToolStripMenuItem 中间色ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator155;\n        private System.Windows.Forms.ToolStripMenuItem 最大值ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator154;\n        private System.Windows.Forms.ToolStripMenuItem 最小值ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator157;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator158;\n        private System.Windows.Forms.ToolStripMenuItem 图像变形ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator159;\n        private System.Windows.Forms.ToolStripMenuItem waveToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator36;\n        private System.Windows.Forms.ToolStripMenuItem 自然饱和度ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem smartBlurToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator37;\n        private System.Windows.Forms.ToolStripMenuItem anisotropicFilterToolStripMenuItem;\n        private System.Windows.Forms.ToolStripMenuItem 置换ToolStripMenuItem;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator38;\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator39;\n        private System.Windows.Forms.ToolStripMenuItem 噪声ToolStripMenuItem;\n    }\n}\n\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Form1.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing System.Drawing.Imaging;\nusing CCWin;\n\nnamespace TestDemo\n{\n    unsafe public partial class Form1 : CCWin.Skin_Mac\n    {\n        public Form1()\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n        }\n\n        #region  V Defination\n        //image path\n        private String curFileName = null;\n        //current image\n        private Bitmap curBitmap = null;\n        //source image\n        private Bitmap srcBitmap = null;\n        //zphotoengine instance\n        private ZPhotoEngineDll zPhoto = null;\n\n        //temp image for makeup\n        public static Bitmap tempBitmap = null;\n\n        private int[] faceInfos;\n        private int faceNum = 0;\n        private int baseLMLen = 144;\n        private int[] landMark;\n\n        #endregion\n\n        #region  Image open and save\n        //打开图像函数\n        public void OpenFile()\n        {\n            OpenFileDialog ofd = new OpenFileDialog();\n            ofd.Filter = \"所有图像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif;\" +\n                   \"*.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf|\" +\n                   \"位图( *.bmp; *.jpg; *.png;...) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico|\" +\n                   \"矢量图( *.wmf; *.eps; *.emf;...) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf\";\n            ofd.ShowHelp = true;\n            ofd.Title = \"打开图像文件\";\n            if (ofd.ShowDialog() == DialogResult.OK)\n            {\n                curFileName = ofd.FileName;\n                try\n                {\n                    curBitmap = (Bitmap)System.Drawing.Image.FromFile(curFileName);\n\n                    if (Math.Max(curBitmap.Width, curBitmap.Height) > 1280)\n                    {\n                        srcBitmap = new Bitmap(curBitmap, 1280 * curBitmap.Width / Math.Max(curBitmap.Width, curBitmap.Height), 1280 * curBitmap.Height / Math.Max(curBitmap.Width, curBitmap.Height));\n                        curBitmap = new Bitmap(srcBitmap);\n                    }\n                    else\n                    {\n                        srcBitmap = new Bitmap(curBitmap);\n                    }\n\n                }\n                catch (Exception exp)\n                { MessageBox.Show(exp.Message); }\n            }\n        }\n        //保存图像函数\n        public void SaveFile()\n        {\n            SaveFileDialog sfd = new SaveFileDialog();\n            sfd.Filter = \"PNG文件(*.png)|*.png\";\n            if (sfd.ShowDialog() == DialogResult.OK)\n            {\n                pictureBox1.Image.Save(sfd.FileName, ImageFormat.Png);\n            }\n\n        }\n        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            OpenFile();\n            // facedetection            \n            faceInfos = new int[baseLMLen * 1 + 5]; //\n            landMark = new int[baseLMLen];\n            string xmlPath = Application.StartupPath.ToString() + \"\\\\model\\\\\";\n            if (curBitmap != null)\n            {\n                pictureBox1.Image = (Image)curBitmap;\n                toolStripStatusLabel2.Text = \"图像宽高: (\" + curBitmap.Width.ToString() + \",\" + curBitmap.Height.ToString() + \")\";\n            }\n            pictureBox1.Image = curBitmap;\n        }\n\n        private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                SaveFile();\n            }\n        }\n        private void toolStripStatusLabel1_Click(object sender, EventArgs e)\n        {\n            System.Diagnostics.Process.Start(\"https://blog.csdn.net/trent1985\");\n        }\n        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)\n        {\n            if (srcBitmap != null)\n                pictureBox1.Image = srcBitmap;\n        }\n\n        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)\n        {\n            if (curBitmap != null)\n                pictureBox1.Image = curBitmap;\n        }\n        #endregion\n\n        #region Thread for image processing\n        //Aysn image process for UI refreshing\n        //define delegate for image process.\n        public delegate void AysnImageProcessDelegate(int id);\n        private bool processing = false;\n        private void BeginImageProcess(int id)\n        {\n            if (processing)\n            {\n                MessageForm mf = new MessageForm(\"正在处理中，请稍候！\");\n                {\n                    mf.ShowDialog();\n                }\n                return;\n            }\n            this.Invoke((EventHandler)delegate\n            {\n                toolStripStatusLabel3.Text = \"当前进度：正在处理中......\";\n                toolStripStatusLabel3.BackColor = Color.Red;\n                processing = true;\n            });\n            AysnImageProcessDelegate sysndelegate = new AysnImageProcessDelegate(ImageProcessing);\n            sysndelegate.BeginInvoke(id, ImageProcessDone, sysndelegate);\n            //return sysndelegate.BeginInvoke(id, ImageProcessDone, sysndelegate);\n        }\n        private void ImageProcessDone(IAsyncResult result)\n        {\n            AysnImageProcessDelegate aysnDelegate = result.AsyncState as AysnImageProcessDelegate;\n            if (aysnDelegate != null)\n            {\n                pictureBox1.Image = (Image)curBitmap;\n            }\n            this.Invoke((EventHandler)delegate\n            {\n                toolStripStatusLabel3.Text = \"当前进度：完成\";\n                toolStripStatusLabel3.BackColor = Color.Transparent;\n                processing = false;\n            });\n        }\n        private void ImageProcessing(int id)\n        {\n            if (pictureBox1.Image == null)\n                return;\n            switch (id)\n            {\n                case ImageProcessId.ID_ROTATE:\n                    RotateForm rotate = new RotateForm(curFileName);\n                    if (rotate.ShowDialog() == DialogResult.OK)\n                    {\n                        int degree = rotate.getDegree;\n                        curBitmap = zPhoto.TransformRotation(curBitmap, degree, 1, 0);\n                    }\n                    break;\n                case ImageProcessId.ID_ZOOM:\n                    ZoomForm zoom = new ZoomForm();\n                    if (zoom.ShowDialog() == DialogResult.OK)\n                    {\n                        float scale = zoom.getScale;\n                        curBitmap = zPhoto.TransformScale(curBitmap, scale, 1, 0);\n                    }\n                    break;\n                case ImageProcessId.ID_HMIRROR:\n                    curBitmap = zPhoto.TransformMirror(curBitmap, 4);\n                    break;\n                case ImageProcessId.ID_VMIRROR:\n                    curBitmap = zPhoto.TransformMirror(curBitmap, 5);\n                    break;\n                case ImageProcessId.ID_AUTO_COLORGRADATION:\n                    curBitmap = zPhoto.AutoColorGradationAdjust(curBitmap);\n                    break;\n                case ImageProcessId.ID_AUTO_CONTRAST:\n                    curBitmap = zPhoto.AutoContrastAdjust(curBitmap);\n                    break;\n                case ImageProcessId.ID_HISTAGRAMEQUALIZE:\n                    curBitmap = zPhoto.HistagramEqualize(curBitmap);\n                    break;\n                case ImageProcessId.ID_BRIGHTCONTRAST:\n                    BrightContrastForm bc = new BrightContrastForm(curFileName);\n                    if (bc.ShowDialog() == DialogResult.OK)\n                    {\n                        int bright = bc.getBright;\n                        int contrast = bc.getContrast;\n                        if (bc.getVersion)\n                        {\n                            curBitmap = zPhoto.NLinearBrightContrastAdjust(curBitmap, bright, contrast, 128);\n                        }\n                        else\n                        {\n                            curBitmap = zPhoto.LinearBrightContrastAdjust(curBitmap, bright, contrast, 128);\n                        }\n                    }\n                    break;\n                case ImageProcessId.ID_COLORLEVEL:\n                    LevelForm form = new LevelForm(curFileName);\n                    if (form.ShowDialog() == DialogResult.OK)\n                    {\n                        int lInput = form.getLeftInput;\n                        double mInput = form.getMidInput;\n                        int rInput = form.getRightInput;\n                        int lOutput = form.getLeftOutput;\n                        int rOutput = form.getRightOutput;\n                        int channel = form.getChannel;\n                        curBitmap = zPhoto.ColorLevelProcess(curBitmap, channel, lInput, (float)mInput, rInput, lOutput, rOutput);\n                    }\n                    break;\n                case ImageProcessId.ID_HSL:\n                    HSLForm hsl = new HSLForm(curFileName);\n                    if (hsl.ShowDialog() == DialogResult.OK)\n                    {\n                        int h = hsl.getHue;\n                        int s = hsl.getSaturation;\n                        int l = hsl.getLightness;\n                        curBitmap = zPhoto.HueSaturationAdjust(curBitmap, h, s);\n                        curBitmap = zPhoto.LightnessAdjustProcess(curBitmap, l);\n\n                    }\n                    break;\n                case ImageProcessId.ID_COLORBALANCE:\n                    ColorbalanceForm corB = new ColorbalanceForm(curFileName);\n                    if (corB.ShowDialog() == DialogResult.OK)\n                    {\n                        int cyan = corB.getCyan;\n                        int magenta = corB.getMagenta;\n                        int yellow = corB.getYellow;\n                        curBitmap = zPhoto.ColorBalanceProcess(curBitmap, cyan, magenta, yellow, 0, corB.getLum);\n                    }\n                    break;\n                case ImageProcessId.ID_INVERT:\n                    curBitmap = zPhoto.Invert(curBitmap);\n                    break;\n                case ImageProcessId.ID_POSTERIZE:\n                    PosterizeForm poster = new PosterizeForm(curFileName);\n                    if (poster.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.Posterize(curBitmap, poster.getLevelNum);\n                    }\n                    break;\n                case ImageProcessId.ID_THRESHOLD:\n                    ThresholdForm threForm = new ThresholdForm(curFileName);\n                    if (threForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.Threshold(curBitmap, threForm.getThresold);\n                    }\n                    break;\n                case ImageProcessId.ID_DESATURATE:\n                    curBitmap = zPhoto.Desaturate(curBitmap);\n                    break;\n                case ImageProcessId.ID_HIGHLIGHTSHADOW:\n                    HighlightShadowForm hsform = new HighlightShadowForm(curFileName);\n                    if (hsform.ShowDialog() == DialogResult.OK)\n                    {\n                        int shadow = hsform.getShadow;\n                        int highlight = hsform.getHighlight;\n                        curBitmap = zPhoto.HighlightShadowPreciseAdjustProcess(curBitmap, highlight, shadow);\n                        //Bitmap tmp = zPhoto.ShadowAdjust(curBitmap, shadow, 100);\n                        //curBitmap = zPhoto.HighlightAdjust(tmp, highlight, 100);\n                    }\n                    break;\n                case ImageProcessId.ID_EXPOSURE:\n                    ExposureForm eform = new ExposureForm(curFileName);\n                    if (eform.ShowDialog() == DialogResult.OK)\n                    {\n                        int intensity = eform.getIntensity;\n                        curBitmap = zPhoto.ExposureAdjust(curBitmap, intensity);\n                    }\n                    break;\n                case ImageProcessId.ID_COLORTEMPEATURE:\n                    TempreatureForm teform = new TempreatureForm(curFileName);\n                    if (teform.ShowDialog() == DialogResult.OK)\n                    {\n                        int intensity = teform.getTempeature;\n                        curBitmap = zPhoto.ColorTemperatureProcess(curBitmap, intensity);\n                    }\n                    break;\n                case ImageProcessId.ID_FINDEDGES:\n                    curBitmap = zPhoto.FindEdgesProcess(curBitmap);\n                    break;\n                case ImageProcessId.ID_RELIEF:\n                    ReliefForm rform = new ReliefForm(curFileName);\n                    if (rform.ShowDialog() == DialogResult.OK)\n                    {\n                        int angle = rform.getAngle;\n                        int amount = rform.getAmount;\n                        curBitmap = zPhoto.Relief(curBitmap, angle, amount);\n                    }\n                    break;\n                case ImageProcessId.ID_DIFUSSION:\n                    DifussionForm dform = new DifussionForm(curFileName);\n                    if (dform.ShowDialog() == DialogResult.OK)\n                    {\n                        int intensity = dform.getIntensity;\n                        curBitmap = zPhoto.DiffusionProcess(curBitmap, intensity);\n                    }\n                    break;\n                case ImageProcessId.ID_OVEREXPOSURE:\n                    curBitmap = zPhoto.OverExposure(curBitmap);\n                    break;\n                case ImageProcessId.ID_SURFACEBLUR:\n                    SurfaceBlurForm srform = new SurfaceBlurForm(curFileName);\n                    if (srform.ShowDialog() == DialogResult.OK)\n                    {\n                        int radius = srform.getRadius;\n                        int threshold = srform.getThreshld;\n                        curBitmap = zPhoto.SurfaceBlur(curBitmap, threshold, radius);\n                    }\n                    break;\n                case ImageProcessId.ID_MOTIONBLUR:\n                    MotionBlurForm moform = new MotionBlurForm(curFileName);\n                    if (moform.ShowDialog() == DialogResult.OK)\n                    {\n                        int angle = moform.getAngle;\n                        int distance = moform.getDistance;\n                        curBitmap = zPhoto.MotionBlur(curBitmap, angle, distance);\n                    }\n                    break;\n                case ImageProcessId.ID_MEANBLUR:\n                    MeanBlurForm meform = new MeanBlurForm(curFileName);\n                    if (meform.ShowDialog() == DialogResult.OK)\n                    {\n                        int radius = meform.getRadius;\n                        curBitmap = zPhoto.MeanFilterProcess(curBitmap, radius);\n                    }\n                    break;\n                case ImageProcessId.ID_GAUSSBLUR:\n                    GaussBlurForm gauform = new GaussBlurForm(curFileName);\n                    if (gauform.ShowDialog() == DialogResult.OK)\n                    {\n                        double radius = gauform.getRadius;\n                        curBitmap = zPhoto.GaussFilterProcess(curBitmap, (float)radius);\n                    }\n                    break;\n                case ImageProcessId.ID_RADIAL:\n                    RadialBlurForm raform = new RadialBlurForm(curFileName);\n                    if (raform.ShowDialog() == DialogResult.OK)\n                    {\n                        int amount = raform.getAmount;\n                        curBitmap = zPhoto.RadialBlurProcess(curBitmap, amount);\n                    }\n                    break;\n                case ImageProcessId.ID_ZOOMBLUR:\n                    ZoomBlurForm zoomform = new ZoomBlurForm(curFileName);\n                    if (zoomform.ShowDialog() == DialogResult.OK)\n                    {\n                        int amount = zoomform.getAmount;\n                        int radius = zoomform.getRadius;\n                        curBitmap = zPhoto.ZoomBlurProcess(curBitmap, radius, amount);\n                    }\n                    break;\n                case ImageProcessId.ID_MEAN:\n                    curBitmap = zPhoto.MeanProcess(curBitmap);\n                    break;\n                case ImageProcessId.ID_MOSCIA:\n                    MosciaForm mosciaform = new MosciaForm(curFileName);\n                    if (mosciaform.ShowDialog() == DialogResult.OK)\n                    {\n                        int blockSize = mosciaform.getBlocksize;\n                        curBitmap = zPhoto.MosaicProcess(curBitmap, blockSize);\n                    }\n                    break;\n                case ImageProcessId.ID_FRAGMENT:\n                    curBitmap = zPhoto.Fragment(curBitmap);\n                    break;\n                case ImageProcessId.ID_HIGHPASS:\n                    HighpassForm hpform = new HighpassForm(curFileName);\n                    if (hpform.ShowDialog() == DialogResult.OK)\n                    {\n                        double radius = hpform.getRadius;\n                        curBitmap = zPhoto.HighPassProcess(curBitmap, (float)radius);\n                    }\n                    break;\n                case ImageProcessId.ID_USM:\n                    USMForm usmform = new USMForm(curFileName);\n                    if (usmform.ShowDialog() == DialogResult.OK)\n                    {\n                        double radius = usmform.getRadius;\n                        int amount = usmform.getAmount;\n                        int threshold = usmform.getThreshold;\n                        curBitmap = zPhoto.USMProcess(curBitmap, (float)radius, amount, threshold);\n                    }\n                    break;\n                case ImageProcessId.ID_CHANNELMIXER:\n                    ChannelMixForm cmform = new ChannelMixForm(curFileName);\n                    if (cmform.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = new Bitmap(cmform.getResImage);\n                    }\n                    break;\n                case ImageProcessId.ID_BLACKWHITE:\n                    BlackWhiteForm whform = new BlackWhiteForm(curFileName);\n                    if (whform.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.BlackwhiteProcess(curBitmap, whform.getKRed, whform.getKGreen, whform.getKBlue, whform.getKYellow, whform.getKCyan, whform.getKMagenta);\n                    }\n                    break;\n                case ImageProcessId.ID_GAMMA:\n                    GammaForm gammaForm = new GammaForm(curFileName);\n                    if (gammaForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.GammaCorrectProcess(curBitmap, gammaForm.getGamma);\n                    }\n                    break;\n                case ImageProcessId.ID_MEDIANFILTER:\n                    MedianForm medianForm = new MedianForm(curFileName);\n                    if (medianForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.MedianFilterProcess(curBitmap, medianForm.getRadius);\n                    }\n                    break;\n                case ImageProcessId.ID_MAXFILTER:\n                    MaxForm maxForm = new MaxForm(curFileName);\n                    if (maxForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.MaxFilterProcess(curBitmap, maxForm.getRadius);\n                    }\n                    break;\n                case ImageProcessId.ID_MINFILTER:\n                    MinForm minForm = new MinForm(curFileName);\n                    if (minForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.MinFilterProcess(curBitmap, minForm.getRadius);\n                    }\n                    break;\n                case ImageProcessId.ID_NATURALSATURATION:\n                    NSaturationForm nsatForm = new NSaturationForm(curFileName);\n                    if (nsatForm.ShowDialog() == DialogResult.OK)\n                    {\n                        curBitmap = zPhoto.NaturalSaturationProcess(curBitmap, nsatForm.getSaturation);\n                    }\n                    break;\n                case ImageProcessId.ID_IMAGEWARP_WAVE:\n                    curBitmap = zPhoto.ImageWarpWaveProcess(curBitmap, 60);\n                    /////////////////////////////////////////////////////////\n                    \n                    break;\n                case ImageProcessId.ID_SMARTBLUR:\n                    SmartBlurForm sbform = new SmartBlurForm(curFileName);\n                    if (sbform.ShowDialog() == DialogResult.OK)\n                    {\n                        int radius = sbform.getRadius;\n                        int threshold = sbform.getThreshld;\n                        curBitmap = zPhoto.SmartBlurProcess(curBitmap, radius, threshold);\n                    }\n                    break;\n                case ImageProcessId.ID_DISPLACEMENTFILTER:\n                    DisplacementFrom displacementform = new DisplacementFrom();\n                    if (displacementform.ShowDialog() == DialogResult.OK)\n                    {\n                        string mskPath = displacementform.getMaskPath;\n                        int hRatio = displacementform.getHRatio;\n                        int vRatio = displacementform.getVRatio;\n                        try\n                        {\n                            curBitmap = zPhoto.DisplacementFilter(curBitmap, new Bitmap(mskPath), hRatio, vRatio);\n                        }\n                        catch (Exception exp)\n                        {\n                            MessageBox.Show(\"Please check input params!\");\n                        }\n                    }\n                    break;\n                case ImageProcessId.ID_NOISEEFFECT:\n                    curBitmap = zPhoto.NoiseEffect(curBitmap, 100, 0.5f, 50.0f);\n                    break;\n                default:\n                    break;\n            }\n        }\n        #endregion\n\n        #region UI response\n        private void 图像旋转ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_ROTATE);\n        }\n\n        private void 恢复原图ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            if (curFileName != null)\n            {\n                curBitmap = new Bitmap(curFileName);\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n\n        private void 图像缩放ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_ZOOM);\n        }\n\n\n        private void 水平翻转ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_HMIRROR);\n        }\n\n        private void 垂直翻转ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_VMIRROR);\n        }\n\n        private void 自动色调ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_AUTO_COLORGRADATION);\n        }\n\n        private void 自动对比度ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_AUTO_CONTRAST);\n        }\n\n        private void 色调均化ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_HISTAGRAMEQUALIZE);\n        }\n\n        private void 亮度对比度ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_BRIGHTCONTRAST);\n        }\n\n        private void 色阶ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_COLORLEVEL);\n        }\n\n        private void 色相饱和度ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_HSL);\n        }\n\n        private void 色彩平衡ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_COLORBALANCE);\n        }\n\n        private void 反相ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_INVERT);\n        }\n\n        private void 色调分离ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_POSTERIZE);\n        }\n\n        private void 阈值ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_THRESHOLD);\n        }\n        private void 去色ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_DESATURATE);\n        }\n\n        private void 高光阴影调节ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_HIGHLIGHTSHADOW);\n        }\n\n        private void 曝光调节ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_EXPOSURE);\n        }\n\n        private void 色温调节ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_COLORTEMPEATURE);\n        }\n\n        private void 查找边缘ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_FINDEDGES);\n        }\n\n        private void 浮雕效果ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_RELIEF);\n        }\n\n        private void 扩散ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_DIFUSSION);\n        }\n\n        private void 曝光过度ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_OVEREXPOSURE);\n        }\n\n        private void 表面模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_SURFACEBLUR);\n        }\n\n        private void 动感模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MOTIONBLUR);\n        }\n\n        private void 均值模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MEANBLUR);\n        }\n\n        private void 高斯模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_GAUSSBLUR);\n        }\n\n        private void 旋转模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_RADIAL);\n        }\n\n        private void 缩放模糊ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_ZOOMBLUR);\n        }\n\n        private void 平均ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MEAN);\n        }\n\n        private void 马赛克ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MOSCIA);\n        }\n\n        private void 碎片ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_FRAGMENT);\n        }\n\n        private void 高反差保留ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_HIGHPASS);\n        }\n\n        private void uSM锐化ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_USM);\n        }\n        private void 通道混合器ToolStripMenuItem_Click_1(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_CHANNELMIXER);\n\n        }\n\n        private void 黑白ToolStripMenuItem1_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_BLACKWHITE);\n        }\n        private void 直方图ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            if (pictureBox1.Image != null)\n            {\n                HistagramForm form = new HistagramForm(curFileName);\n                form.Show();\n            }\n        }\n        private void gamma调节ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_GAMMA);\n        }\n        private void 中间色ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MEDIANFILTER);\n        }\n\n        private void 最大值ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MAXFILTER);\n        }\n\n        private void 最小值ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_MINFILTER);\n        }\n\n        private void waveToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_IMAGEWARP_WAVE);\n        }\n\n        private void 自然饱和度ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_NATURALSATURATION);\n        }\n        private void smartBlurToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_SMARTBLUR);\n        }\n        #endregion\n\n        private void anisotropicFilterToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_ANISOTROPICFILTER);\n        }\n\n        private void 置换ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_DISPLACEMENTFILTER);\n        }\n\n        private void 噪声ToolStripMenuItem_Click(object sender, EventArgs e)\n        {\n            BeginImageProcess(ImageProcessId.ID_NOISEEFFECT);\n        }\n\n\n\n\n\n\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Form1.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"menuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n  <metadata name=\"statusStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>137, 17</value>\n  </metadata>\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>25</value>\n  </metadata>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"$this.Icon\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMt54wjLeOIKynjiCsp44grKeOIKy3jiCst4\n        4grKeOMKynjjCst44grLeOEKy3jiCst44grLeeIKy3riCst64grLeuMKy3rjCst64wrLeuMKy3rjCst6\n        4grLeuIKy3riCst64QrLeuIKy3rhCst64grLeuMKy3rhCst64QrLeuEKy3riCst64grLeuIKy3rhCst6\n        4grLeuIKy3rhCst64grLeuMKy3riCst64QrLeuIKy3riCst64QrLeuEKy3rhCst64grLeuMKy3rjCst6\n        4grLeuIKy3riCst64QrLeuIKy3rjCst64grLeuEKy3riCst74wrLe+MKy3vjCst74wrLe+MKy3vjCst7\n        4wrLe+MKy3vjCst74wrLe+MKy3vjCst74wrLe+MKy3vjCst74wrLe+MKy3vjCst74wrLe+MKy3vjCst7\n        4wrLe+MKy3vjCst74wrLe+MKy3vjCst74wrLe+MKy3vjCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMt6\n        4gjLeuJmynni4ct54v/KeeL/ynni/8p54v/LeeL/y3ni/8p54v/KeeL/y3ni/8t54v/LeeL/y3ni/8t5\n        4v/LeuL/y3ri/8t64//LeuP/y3rj/8t64//LeuP/y3ri/8t64v/LeuL/y3ri/8t64v/LeuL/y3ri/8t6\n        4//LeuL/y3ri/8t64v/LeuL/y3ri/8t64v/LeuL/y3ri/8t64v/LeuL/y3ri/8t64//LeuL/y3ri/8t6\n        4v/LeuL/y3ri/8t64v/LeuL/y3ri/8t64//LeuP/y3ri/8t64v/LeuL/y3ri/8t64v/LeuP/y3ri/8t6\n        4v/LeuL/y3vj/8t74//Le+P/y3vj/8t74//Le+P/y3vj/8t74//Le+P/y3vj/8t74//Le+P/y3vj/8t7\n        4//Le+P/y3vj/8t74//Le+P/y3vj/8t74//Le+P/y3vj/8t74v/Le+L/y3vj/8t74//Le+P/y3vi/8t7\n        4v/Le+LhzHziZsx84ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLe+Nay3vix8t64v/LeuL/y3rj/8t64v/LeuL/y3ri/8t6\n        4v/LeuL/y3ri/8t64v/LeuL/y3ri/8t64v/LeuL/y3ri/8t64v/LeuL/y3vj/8t74v/Le+L/y3vj/8t7\n        4//Le+P/y3vj/8t74v/Le+L/y3vj/8t74//Le+L/y3vi/8t74v/Le+L/y3vi/8t74v/Le+L/y3vi/8t7\n        4v/Le+L/y3vi/8t74v/Le+L/y3vi/8t74v/Le+P/y3vj/8t74//Le+L/y3vi/8t74v/Le+L/y3vj/8t7\n        4v/Le+L/y3vi/8t74//Le+P/y3vj/8t74//Le+L/y3vi/8t74v/Le+L/y3vi/8t84v/LfOL/y3zi/8x8\n        4v/LfOL/y3zi/8t84v/LfOL/y3zi/8t84v/LfOL/y3zj/8x84//LfOL/y3zi/8t84v/LfOL/y3zi/8t8\n        4v/MfOL/y3zi/8t84v/LfOP/y3zj/8t84//LfOL/y3zi/8t84v/LfOL/zH3ix8x941oAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzH3iTsx8\n        4v/LfOL/y3zj/8t84v/LfOL/y3zi/8t84v/LfOL/y3zi/8t84v/LfOL/y3zj/8x84v/LfOL/y3zi/8x8\n        4v/LfOL/y3zi/8t84v/LfOL/y3zi/8t84v/LfOL/y3zi/8t84v/LfeL/y33i/8t94v/LfeP/y33j/8t9\n        4v/MfeL/y33i/8t94v/LfeL/zH3i/8t94v/LfeL/zH3j/8x94v/LfeL/y33i/8x94v/LfeL/y33i/8t9\n        4//LfeP/zH3j/8t94v/LfeL/y33i/8t94v/MfeP/y33i/8t94v/LfeL/zH3j/8t94//LfeP/y33j/8t9\n        4v/LfeL/y33i/8t94//LfeL/y33i/8x94v/MfeL/zH3i/8t94v/MfeP/zH3j/8x94//MfuP/zH3j/8x9\n        4//MfeP/zH7j/8x94//MfeP/zH3j/8x94//MfeP/zH7j/8x+4//MfeP/zH7j/8x94//MfeP/zH7j/8x9\n        4//MfuP/zH3j/8x94//MfuP/zH3j/8x+4k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAzH7jHMx948nMfePxzH3i/8t94v/LfeP/y33i/8x94v/MfeL/zH3i/8t9\n        4v/LfeL/y33i/8t94v/LfuP/zH3i/8t94v/LfeL/zH3i/8t94v/LfeL/y33i/8t94v/LfeL/y33i/8t9\n        4v/LfeL/y33i/8x94v/LfeP/y37j/8x+4//MfuP/zH7j/8x/4//MfuL/zH7j/8x+4//MfuP/zH7j/8x+\n        4v/MfuP/zH7j/8x+4//MfuP/zH7i/8x+4v/MfuL/zH7i/8x+4//MfuP/zH7i/8x+4v/MfuL/zH7j/8x+\n        4//MfuP/zH7j/8x+4//MfuL/zH7i/8x+4v/MfuP/zH7i/8x+4//MfuL/zH7j/8x+4v/MfuL/zH7i/8x+\n        4v/MfuP/zH7j/8x+4v/MfuL/zH7i/8x/4v/Mf+L/zH/i/8x/4//Mf+P/zH/j/8x/4//Mf+P/zH/i/8x/\n        4v/Mf+L/zH/j/8x/4v/Mf+P/zH/j/8x/4v/Mf+L/zH/i/8x/4//Mf+L/zH/i/8x/4//Mf+L/zH/i8cx/\n        4snMgOMcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMx/4xzMfuPNzH/i/8x+\n        4v/Mf+L/zH7j/8x+4//Mf+L/zH/i/8x/4//Mf+P/zH7j/8x+4//MfuP/zH/i/8x/4//MfuP/zH7j/8x+\n        4//MfuP/zH7i/8x+4v/MfuL/zH7i/8x/4//Mf+P/zH/j/8x+4//Mf+L/zH7i/8x/4v/MfuP/zH/i/8x/\n        4//Mf+P/zH/j/8x/4v/Mf+P/zIDj/8yA4//Mf+P/zH/i/82A4//Mf+P/zIDj/8x/4//MgOL/zIDi/8yA\n        4v/Mf+L/zIDj/8yA4//MgOL/zH/i/81/4v/MgOP/zH/j/8x/4//Mf+P/zH/j/8yA4v/Mf+L/zH/i/8x/\n        4//MgOL/zIDj/8yA4v/MgOP/zH/i/8x/4v/Mf+L/zH/i/8yA4//Mf+P/zH/i/8x/4v/MgOL/zH/i/8x/\n        4v/MgOL/zIDj/8yA4//MgeP/zYDj/8yA4//MgOP/zIDj/8yA4//MgOP/zIDj/8yB4//MgeP/zIDj/8yA\n        4//MgOP/zIDj/8yA4//MgOP/zIDj/8yA4//MgeP/zIDj/8yA483NgeMcAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAzIDjYMyA4//MgOL/zIDi/8yA4v/MgOP/zIDj/8yA4v/MgOL/zIDj/8yA\n        4//MgOP/zIDj/8yA4//MgOL/zIDj/8yA4//MgOP/zIDj/8yA4//MgOL/zIDi/8yA4v/MgOL/zIDj/8yA\n        4//MgOP/zIDj/8yA4v/MgOL/zIDi/8yA4//MgOL/zIDj/8yA4//MgOP/zIDj/8yA4//MgOP/zIDj/8yA\n        4//MgeP/zYHj/8yB4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//MgeP/zYHj/8yB\n        4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//MgeP/zYHj/8yB4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB\n        4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//MgeP/zIHj/8yB4//NgeP/zYHj/82B\n        4//NgeP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C\n        4//NguP/zYLj/82C42AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2C4k7NgePxzYHj/82B\n        4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B\n        4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B\n        4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NgeP/zYHj/82B4//NguP/zYLj/82C4//NguP/zYLj/82C\n        4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C\n        4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C\n        4//NguP/zYLj/82C4//NguP/zYLj/82C4//NguP/zYLj/82C4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D\n        4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj8c2E4k4AAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADMguMezYLj/82C4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D\n        4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D\n        4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D4//Ng+P/zYPj/82D\n        4//Ng+P/zYPj/82D4//Ng+P/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/86F4//NheP/zYXj/86F4//OheP/zoXj/86F4//OheP/zoXj/86F\n        4//OheP/zYXj/86F4//NheP/zYXj/82F4x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2E45XNg+P/zYPj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E\n        4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82E4//NhOP/zYTj/82F\n        4//OheP/zYXj/82F4//NheP/zYXj/82F4//NheP/zoXj/82F4//NheP/zYXj/82F4//NheP/zYXj/82F\n        4//NheP/zoXj/82F4//OheP/zYXj/82F4//NheP/zYXj/86F4//NheP/zYXj/82F4//NheP/zYXj/82F\n        4//NheP/zYXj/82F4//NheP/zYXj/82F4//NheP/zoXj/82F4//NheP/zYXj/86F4//OheP/zoXj/86F\n        4//NheP/zYbj/82G4//OhuP/zobj/86G4//OhuP/zobj/86G4//NhuP/zobj/86G4//NhuP/zYbjlQAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADNheMszYXi3c6F4//OheP/zoXj/82F4//NheP/zoXj/82F4//NheP/zYXj/82F\n        4//NhuP/zYbj/82G4//OhuP/zYbj/82F4//NhuP/zYXj/82G4//NhuP/zobj/86G4//OhuP/zYbj/82F\n        4//OhuP/zobj/82G4//NhuP/zobj/86F4//OheP/zoXj/86G4//OhuP/zobj/86G4//OhuP/zYXj/82G\n        4//NhuP/zYbj/86G4//OhuP/zobj/86G4//OhuP/zobj/86G4//OhuP/zobj/82G4//NheP/zofj/86G\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86G4//Oh+P/zofj/86H\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zobj/86G4//OhuP/zofj/86G4//Oh+P/zofj/86G\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86G4//Oh+P/zofj/86H4//Oh+P/zobj/86H4//Oh+P/zofj/86H\n        4//Oh+P/zojj/86I4//OiOP/zojj/86I4//OiOLdzonjLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6G42bNhuP/zobj/86G\n        4//OhuP/zobj/86G4//OhuP/zYbj/82G4//OhuP/zYbj/82G4//Oh+P/zofj/86H4//Oh+P/zofj/86H\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86H\n        4//Oh+P/zofj/86H4//Oh+P/zofj/86H4//Oh+P/zofj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I\n        4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I\n        4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I\n        4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zonj/86J4//OiOP/zonj/86J\n        4//OieNmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAzojjZs6I4//OiOP/zojj/86I4//OiOP/zojj/86I4//Oh+P/zofj/86I\n        4//OiOP/zojj/86I4//OiOP/zojj/86I4//OiOP/zonj/86I4//OiOP/zojj/86J4//PieP/zonj/86J\n        4//OieP/zojj/86I4//OieP/zonj/86J4//OieP/zonj/86J4//OiOP/zojj/86J4//OieP/zonj/86J\n        4//OieP/zojj/86I4//OieP/zojj/86I4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86I\n        4//OiOP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J\n        4//OieP/zonj/86J4//OieP/zonj/86J4//PieP/zonj/86J4//OieP/zonj/8+J4//PieP/zonj/86J\n        4//OieP/zonj/86J4//OieP/z4nj/8+J4//OieP/zonj/86J4//PieP/zonj/86J4//OieP/zonj/86J\n        4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/8+K42YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOieNmzonj/86J\n        4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J4//OieP/zonj/86J\n        4//OieP/zonj/86J4//OieP/zonj/8+J4//OieP/zonj/86K4//OiuP/zorj/86K4//OiuP/zorj/86K\n        4//OiuP/zorj/86K4//OiuP/zorj/86K4//PiuP/zorj/86K4//PiuP/zorj/86K4//OiuP/zorj/86K\n        4//OiuP/zorj/86K4//OiuP/zorj/86K4//OiuP/zorj/8+K4//PiuP/z4rj/86K4//OiuP/zorj/86K\n        4//OiuP/zorj/86K4//PiuP/z4rj/8+K4//PiuP/z4rj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4vjZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+K42bPiuP/z4rj/8+K4//PiuP/z4rj/8+K4//PiuP/z4rj/8+K\n        4//PiuP/z4rj/8+K4//PiuP/z4rj/8+K4//PiuP/z4rj/8+K4//PiuP/z4rj/8+K4//PiuP/z4rj/8+K\n        4//PiuP/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L4//Pi+P/z4vj/8+L\n        4//Pi+P/z4zj/8+M4//PjOP/z4zj/8+M5P/PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M\n        4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M\n        4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjONmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz4zjZs+M\n        4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M\n        4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z4zj/8+M4//PjOP/z43j/8+N\n        4//PjeP/z43j/8+N5P/PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeT/z43j/8+N5P/PjeP/z43j/8+N\n        4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N\n        4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43k/8+O\n        4//PjuP/z47j/8+O4//PjuP/z47j/8+O4//PjuP/0I7j/8+O4//PjuP/z47j/8+O4//PjuP/z47j/8+O\n        4//PjuP/z47j/8+O4//PjuP/z47j/8+O4//PjuP/z47j/8+O4//PjuP/z47j/8+O4//PjuP/z47j/8+O\n        4//PjuP/z47j/8+O42YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjeRmz43j/8+N4//PjeP/z43k/8+N4//PjeP/z43j/8+N\n        5P/PjeP/z43j/8+N4//PjeP/z43k/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjeP/z43j/8+N\n        4//PjeP/z43j/8+N4//PjeP/z43j/8+N4//PjuP/0I7k/8+O5P/PjuT/z47k/9CO4//QjuT/0I7k/9CO\n        5P/QjuT/0I7k/9CO5P/QjuT/0I7k/9CO5P/QjuT/0I7k/9CO5P/QjuT/0I7k/9CO5P/QjuT/0I7k/9CO\n        5P/QjuT/0I7k/9CO5P/QjuT/0I7j/9CO4//QjuT/0I7k/8+O5P/PjuP/0I7j/9CO5P/QjuT/0I7k/9CO\n        5P/QjuT/0I7k/9CO4//QjuP/0I7j/9CO4//QjuT/0I/k/9CP5P/Qj+T/0I/k/9CP5P/Qj+T/0I/k/9CP\n        5P/Qj+T/0I/k/9CP5P/Qj+T/0I/j/9CP4//Qj+P/0I/j/8+P5P/Pj+T/0I/k/9CP5P/Qj+T/0I/k/9CP\n        5P/Qj+T/0I/k/9CP5P/Pj+T/0I/j/9CP4//Qj+T/z4/j/9CP4//Qj+T/0I/kZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCP\n        5GbQj+T/z4/k/8+P5P/Qj+T/0I/k/9CP5P/Qj+T/0I/k/9CP5P/Qj+T/0I/j/9CP4//Qj+T/0I/k/9CP\n        5P/Qj+T/0I/k/8+P5P/Pj+P/0I/j/9CP5P/Qj+T/0I/k/9CP5P/Qj+T/z4/k/8+P5P/Qj+P/0I/j/9CP\n        4//Qj+T/z4/k/8+P5P/Pj+T/0I/j/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JHk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkeT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkeRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0JDkZtCQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ5P/QkOT/0JDk/9CQ\n        5P/QkOT/0JDk/9CQ5P/QkOT/0JHk/9CR5P/QkeT/0JHk/9CR5P/QkOT/0JHk/9CR4//QkeP/0JDj/9CR\n        4//QkOP/0JHj/9CQ4//QkeP/0JDj/8+R4//QkOP/0JDj/9CR5P/QkeT/0JDk/9CR5P/QkOT/0JHk/9CR\n        5P/QkeT/0JHk/9CQ5P/QkeT/0JHk/9CR5P/QkeT/0JHk/9CR5P/QkeT/0JDk/9CR5P/QkeT/0JHk/9CR\n        5P/QkeT/0JHk/9CR5P/QkeT/0JHk/9CS5P/QkeT/0JLk/9CS5P/QkuT/0JHk/9CS5P/RkuT/0JLk/9CS\n        5P/QkuT/0JLk/9CS5P/QkuT/0ZLk/9CS5P/QkuT/0JLk/9CS5P/QkuT/0JHk/9CS5GYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADQkeRm0JHk/9GR5P/QkeT/0JHk/9CS5P/RkeT/0JLk/9CR5P/RkeT/0ZHk/9CR5P/QkeT/0JHk/9CR\n        5P/QkuT/0JHk/9CR5P/QkeT/0JHk/9CR5P/QkeT/0JHk/9CR5P/QkeT/0ZHk/9GR5P/QkeT/0JLk/9CR\n        5P/RkeT/0JHk/9CS5P/QkeT/0JHk/9CR5P/RkeT/0JHk/9CS5P/QkeT/0JLk/9CR5P/QkeT/0JHk/9CS\n        5P/QkuT/0JHj/9CS4//PkuL/zpHh/82Q4P/Mj9//y4/d/8qO3f/Kjdz/yo3c/8qO3P/Lj93/y4/e/8yQ\n        4P/OkeH/z5Li/9CS4//QkuP/0ZPk/9GS5P/Rk+T/0JLk/9GS5P/QkuT/0JLk/9CS5P/Qk+T/0ZLk/9GT\n        5P/RkuT/0ZLk/9GS5P/QkuT/0ZLk/9CS5P/QkuT/0JLk/9CT5P/Rk+T/0ZLk/9CS5P/RkuT/0JPk/9GS\n        5P/Rk+T/0ZTk/9GT5P/Rk+T/0ZPk/9GT5P/RlOT/0ZPk/9GT5P/Rk+T/0ZPk/9GU5P/RlOT/0ZTk/9GT\n        5P/Rk+T/0ZPk/9GU5P/Rk+T/0ZPkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCS5GbQkuT/0ZLk/9CS5P/Qk+T/0JPk/9GS\n        5P/Qk+T/0JPk/9GT5P/Rk+T/0JPk/9CT5P/Qk+T/0JPk/9CT5P/Qk+T/0JPk/9CT5P/Qk+T/0JPk/9CT\n        5P/Rk+T/0JPk/9CT5P/Rk+T/0ZPk/9GT5P/Qk+T/0JPk/9GT5P/Rk+T/0JPk/9CT5P/Rk+T/0ZPk/9GT\n        5P/Rk+T/0ZPk/9CT5P/Qk+T/0JPj/9CS4//PkuP/zpHh/82Q3//Jjtz/xozZ/8KJ1P+/htD/u4TM/7iC\n        yf+1gMX/s3/E/7J+w/+yfsP/s3/E/7WAxf+3gsj/u4TM/7+H0P/CitT/xozY/8mP3P/Mkd//zpLh/9CT\n        4v/Qk+P/0ZPj/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU\n        5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU\n        5P/RlOT/0ZXk/9GV5P/RleT/0ZXk/9GV5P/RleT/0ZXk/9GV5P/RleT/0ZXk/9GV5P/RleRmAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA0ZPkZtGT5P/Rk+T/0ZPk/9GT5P/Rk+T/0ZPk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU\n        5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU\n        5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9GU5P/RlOT/0ZTk/9CU4//Pk+L/zZHf/8mP\n        2//Di9X/vYbO/7WAxf+ue77/pnW0/59xrf+YbKb/k2ih/5BmnP+MZJn/i2OY/4tjmP+NZJn/kGac/5Np\n        oP+YbKX/n3Gt/6R2tP+te73/tIDE/7yGzf/Di9T/yY/b/82S3//PlOH/0ZXj/9GV5P/RleT/0ZXk/9GV\n        5P/RleT/0ZXk/9GV5P/RleT/0pXk/9GV5P/RleT/0ZXk/9GV5P/RleT/0pXk/9GV5P/SleT/0ZXk/9GV\n        5P/RleT/0ZXk/9GV5P/RleT/0ZXk/9KV5P/RleT/0ZXk/9GV5P/SluT/0pbk/9KW5P/SluT/0pbl/9KW\n        5f/SluT/0pbk/9KW5P/SluT/0pbk/9KW5GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRleRm0ZXk/9GV5P/RleT/0ZXk/9GV\n        5P/RleT/0ZXk/9GV5P/RleT/0ZXk/9GV5P/RleT/0ZXk/9GV5P/RleT/0pXk/9GV5P/RluT/0Zbk/9GW\n        5P/RluT/0Zbk/9GW5P/RluT/0Zbk/9GW5P/RluT/0Zbk/9GW5P/RluT/0Zbk/9GW5P/RluT/0Zbk/9GW\n        5P/RluT/0Zbk/9GV4//Pk+H/y5Hd/8SM1v+8hsz/sX7B/6V2tP+Zbaf/i2KW/4BZh/90T3X/aEZl/2NB\n        WP9gPU//XTlI/1s3Q/9bN0P/WzdD/1s3Q/9cOEf/XzxO/2I/V/9nRWL/cU5z/39ahv+JYpT/l22k/6N1\n        sf+vfr//uobK/8OM1P/Kkdz/zpTh/9CW4v/RluT/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX\n        5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX\n        5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfkZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAANKW5GbSluT/0pbk/9KW5P/SluX/0pbk/9KW5P/SluT/0pbk/9KW5P/SluT/0pbk/9KW\n        5P/SluT/0pbk/9KW5P/SluT/0pbk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+X/0pfk/9KX\n        5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9KX5P/Sl+T/0pfk/9GX5P/QleL/zJPe/8SN1v+6hsv/q3u7/5xx\n        q/+MZZn/eVWA/2pHZf9YNkT/VzM4/1QvLP9NKCL/SyYe/0okHf9JIxz/SCMb/0giG/9IIhv/SCIb/0kj\n        G/9JIxz/SSQd/0omIP9RLCn/VjI1/1c0Qf9nRGD/d1N9/4pklv+acKj/qXq5/7iGyf/DjdT/y5Pd/8+W\n        4f/Rl+T/0Zjk/9KY5P/SmOT/0pjk/9KY5f/SmOX/0pjl/9KY5f/SmOX/0pjl/9KY5f/SmOX/0pjl/9KY\n        5P/SmOT/0pjl/9KY5P/SmOT/0pjk/9KY5P/SmOT/0pjk/9KY5P/SmOT/0pjk/9KY5P/SmOX/0pjk/9KY\n        5P/SmOX/0pjk/9KY5f/SmOT/0pjk/9KY5f/SmOVmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0pjlZtKY5f/SmOX/0pjk/9KY\n        5P/SmOX/0pjl/9KY5P/SmOT/0pjl/9KY5f/SmOX/0pjk/9KY5f/SmOX/0pjk/9KY5P/SmOX/0pjk/9KY\n        5P/SmOT/0pjk/9KY5f/SmOT/0pjl/9KY5f/SmeX/0pnl/9KZ5f/SmeX/0pjl/9KY5f/SmOT/0pnk/9GZ\n        5P/Ql+L/zJTd/8ON1P+3hcj/pHez/5Jqn/97WIH/ZkRe/1g1Pf9PKiX/UCkg/0wlHv9IIRv/RR8Z/0Qe\n        Gf9EHhn/RB4Y/0MdGP9DHRj/Qx0Y/0MdGP9CHBj/QhwY/0IcF/9CHBf/QhwX/0IcF/9EHhj/SCIb/0wm\n        Hv9LJyL/VTI5/2JBWf94VXz/kGic/6J2sP+1hMX/wo7T/8uU3f/Ql+L/0pnk/9Ka5P/TmuX/05rl/9Ka\n        5f/SmuX/0prl/9Ka5f/TmuX/05rl/9Ka5f/SmeX/0prl/9KZ5f/TmeX/05rl/9Ka5f/SmuX/0prl/9Oa\n        5f/TmuX/05rl/9Oa5f/TmuX/0pnl/9Oa5f/SmuX/0prl/9OZ5f/SmuX/0prl/9KZ5f/TmuX/0pnl/9Ka\n        5WYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADSmeVm0pnl/9KZ5f/SmeT/0pnk/9KZ5f/SmeX/0pnk/9KZ5P/SmeX/0pnl/9KZ\n        5f/SmeT/0pnl/9KZ5f/SmeT/0pnk/9KZ5f/SmeT/0pnk/9KZ5P/SmeT/0pnl/9KZ5P/SmeX/0pjl/9KZ\n        5f/TmuX/0prl/9Ka5f/SmuX/0prl/9Ka5P/SmeT/z5fg/8iS2f+9is3/qn25/5dvo/97WIH/ZUJZ/1cz\n        Nf9SLCb/TSYe/0kiHP9HHxv/Rh8a/0YfGv9FHxr/RR8a/0YgGv9HIRv/SCIc/0ojHf9LJB7/SiQe/0kj\n        Hf9IIhz/RiAa/0QeGf9DHRj/QhwY/0IcF/9CHBf/QhwX/0QeGP9HIRv/TSch/1QvMP9gPVL/eFV8/5Rs\n        oP+ne7b/u4nL/8eS2P/Ol+D/0Zrj/9Ka5P/Sm+T/05vl/9Oa5f/SmuX/0prl/9Oa5f/TmuX/0pvl/9Kb\n        5f/SmuX/0pvl/9Oa5f/Tm+X/05rl/9Kb5f/SmuX/05vl/9Ob5f/Tm+X/05vl/9Ob5f/Sm+X/05rl/9Ob\n        5f/Tm+X/05rl/9Kb5f/Sm+X/0pvl/9Ob5f/Sm+X/0pvlZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANKa5WbSmuX/05vl/9Ob\n        5f/Sm+X/0pvl/9Oa5f/Tm+X/05vl/9Ob5f/Sm+X/0pvl/9Ob5f/Tm+X/0prl/9Kb5f/TmuX/05rl/9Oa\n        5f/TmuX/05vl/9Ob5f/Tm+X/05rl/9Ka5f/SmuX/0prl/9Ob5f/TmuX/05rl/9Ka5f/SmuT/0Znj/8yW\n        3v/Cj9P/sYLA/5xzqf9/W4X/ZUNY/1UwLv9RKyL/TCUe/0khG/9JIRv/SCAb/0ggG/9KIhz/UCgh/142\n        Lv9tRjz/eVJG/35YSv+AWEr/gVlL/4BZSv+AWUr/gFlK/4FZS/+AWEr/fFVI/3JLQP9kPTP/Uysk/0gh\n        G/9CHBj/QhwY/0IcGP9CHBf/RR8Z/0slHf9QKyj/YT9R/3pXfv+YcKb/r4C+/8CN0f/Llt3/0Jni/9Kb\n        5P/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc\n        5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc5f/TnOX/05zl/9Oc\n        5f/TnOVmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA05vlZtOb5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob\n        5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob5f/Tm+X/05vl/9Ob\n        5f/Tm+X/05vl/9Ob5f/Tm+X/0pvk/9CZ4v/Kldv/vYzN/6h8tv+OaJf/cE1r/1o1OP9ULib/TiYf/0oj\n        Hf9JIhz/SSIc/0sjHv9VLSb/Zj40/3pTR/+AXE//dFFD/2JAMv9JKyH/PiMa/zcdFv81GxT/MhgS/zEY\n        Ef80GhP/Nh0V/zogGP9DJx7/VzYp/25KPP99Wkz/f1pM/21GOv9YMSn/SSIc/0MdGP9CHBj/QhwY/0Uf\n        Gf9NJyD/VDEx/2pIY/+KZZP/pXu0/7uLy//Jldr/0Jrh/9Kc5P/TnOX/05zl/9Oc5f/TneX/053l/9Od\n        5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Sd5f/TneX/053l/9Od\n        5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od5WYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTneVm053l/9Od\n        5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od\n        5f/TneX/053l/9Od5f/TneX/1J3l/9Od5f/TneX/053l/9Od5f/TneX/053l/9Od5P/Qm+H/yZXZ/7iJ\n        yP+heK//gV6H/2NATf9XMSr/USoi/00mHv9MJR7/SyQe/00lH/9dNSz/elNH/4BbTP9qSTz/SSwi/zQX\n        D/8rEAv/LhIN/zQVD/84GBH/OhkS/zwaE/89GxT/PRsU/zwbE/87GhL/ORkS/zYXEP8xFA7/LBEL/ysS\n        Cv82HhX/XD8y/3tVR/+BWk3/Zj81/0skHf9DHRj/Qx4Y/0MdGP9IIhv/Tyoj/1w6Rf98WoD/nnar/7WI\n        xP/Ildj/z5vg/9Oe5P/TnuX/057l/9Oe5f/TnuX/057l/9Oe5f/TnuX/057l/9Sf5f/Un+X/1J/m/9Sf\n        5f/Un+X/1J/l/9Sf5f/Un+X/1J/m/9Sf5f/Un+X/1J/l/9Sf5f/Un+X/1J/l/9Sf5f/Un+X/1J/l/9Sf\n        5f/Un+X/1J/mZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAANOe5WbTnuX/057l/9Oe5f/TnuX/057l/9Oe5f/TnuX/057l/9Oe\n        5f/Tn+X/05/l/9Of5f/Tn+X/05/l/9Of5f/Tn+X/05/l/9Sf5f/Tn+X/05/l/9Of5f/Un+X/05/l/9Sf\n        5f/Tn+X/05/l/9Of5f/TnuX/0Jzi/8aV1v+1iMX/mXKk/3dVdv9eOTv/WDEn/1EpIP9OJh//TSUf/1Ao\n        If9fNy7/fFRH/3lVSP9SMib/MhgR/zAUDf83FxH/PBoT/z8cFf9BHhb/Qh8X/0MfGP9EHxj/RB8Y/0Ug\n        GP9FIBj/RB8Y/0QfGP9DHxj/Qx8Y/0IeF/9AHRb/OhoS/ycPCv8qEQr/NRkR/0QlHP9tSj3/f1pM/2c/\n        Nf9OJyD/RB4Z/0QeGP9FHxn/TScf/1UyMv9xUGz/lG+f/7KHwf/ElNX/z53g/9Of5P/UoOX/1KDl/9Sg\n        5f/UoOX/1KDl/9Sg5f/UoOX/1KDl/9Sg5f/UoOX/1KDl/9Sg5f/UoOX/1KDl/9Sg5f/UoOX/1KDl/9Sg\n        5f/UoeX/1KHm/9Sh5f/UoeX/1KHm/9Sh5f/UoeX/1KHl/9Sh5f/UoeZmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1J/mZtSf\n        5f/Un+X/1J/l/9Sf5f/Un+X/1J/l/9Sf5f/Un+X/1J/l/9Sg5f/UoOX/1KDl/9Sg5f/UoOX/1KDm/9Sg\n        5f/UoOX/1KDl/9Sg5f/UoOX/1KDl/9Sg5f/UoOb/1KDl/9Sg5f/UoOX/06Dl/9Cd4v/Jl9n/tIjD/5p0\n        pv9xT2r/Xjk2/1cvJv9RKSH/UCgg/1AoIP9VLST/elNG/4BbS/9PMSb/MBUO/zIUDv88GxP/QB0V/0Mf\n        GP9FIBn/RSAZ/0YhGf9HIRr/RyEa/0chGv9HIRr/RyEa/0chGv9HIRr/RyEa/0chGv9HIRr/RiEZ/0Ug\n        Gf9CHxf/ORkS/y8VDv9HJBr/OBgR/zMVDv9BIxr/cE0//4NdT/9aMin/RiAa/0QeGf9FHxn/SiQd/1Uw\n        Lf9pSF//lHGh/7CGv//Gl9f/z57h/9Oh5f/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Sh\n        5v/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Sh5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si\n        5v/Uoub/1KLm/9Si5mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUoeZm1KHl/9Sh5f/UoeX/1KHl/9Sh5f/UoeX/1KHl/9Sh\n        5f/UoeX/1KHl/9Sh5f/UoeX/1KHm/9Sh5v/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Sh5v/Uoeb/1KHm/9Si\n        5v/Uoeb/1KLm/9Oh5f/Rn+L/x5jX/7SJw/+Sbpz/cE1k/103Lv9WLiX/Uioi/1IpIf9TKiP/akE3/4Nd\n        T/9ZOSz/LxUO/zQVD/8+HBT/Qx8X/0UgGf9HIRr/RyEa/0chGv9HIhr/RyIa/0ciGv9HIhr/RyIa/0ci\n        Gv9HIhr/RyIa/0ciGv9HIhr/RyIa/0ciGv9HIhr/RyEa/0YgGf9CHhf/LxIM/0snHv9FIBn/Qh4X/z0b\n        FP8zFQ7/RSUb/3xYS/91TUH/Tygh/0UfGv9FHxr/SSIc/1ItJf9nRVj/jWuW/7GHv//FltX/0Z/h/9Sh\n        5f/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si\n        5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Wi5v/Voub/1aPmZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSi\n        5mbUoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si\n        5v/Uoub/1KLm/9Si5v/Uoub/1KLm/9Si5v/Voub/1aLm/9Wi5v/UouX/0qHj/8qb2/+3jMb/mnWm/3BN\n        Y/9gOjL/Vy4l/1QrI/9TKyL/Vy4l/3NLP/97Vkj/QCUc/z4fFv9WMib/Tikf/0gjG/9HIRr/RyIa/0gi\n        Gv9IIhv/SCIb/0giG/9IIhv/SCIb/0giG/9IIhv/SCIb/0giG/9IIhv/SCIb/0giG/9IIhv/SCIb/0gi\n        G/9IIhv/SCIa/0UgGf81FxD/QyIY/0wmHf9GIRr/RiEZ/0IeF/85GRH/ORsT/2ZDNv9/WEv/Vi4m/0Yg\n        Gv9GHxr/SCIb/1QvKP9mRFb/lXKg/7SKwv/Jm9n/0qHi/9Sj5f/VpOX/1aPm/9Wk5v/VpOb/1aPm/9Wj\n        5v/Vo+b/1aPm/9Wj5v/VpOb/1aTm/9Wj5v/VpOb/1aPm/9Wk5v/VpOb/1aPm/9Wk5v/Vo+b/1aTm/9Wj\n        5v/Vo+b/1aTm/9Wk5v/VpOZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1aPmZtWj5v/Vo+b/1aPm/9Wj5v/VpOb/1aPm/9Wj\n        5v/Vo+b/1aPm/9Wj5v/Vo+b/1aPm/9Wj5v/Vo+b/1aTm/9Wj5v/Vo+b/1aPm/9Wj5v/Vo+b/1aPm/9Wj\n        5v/Vo+b/1KPl/9Oi5P/Mndz/upDJ/5p1pf9zUWj/YTox/1gwJ/9VLCT/VSwk/1wzKv9+Vkr/bks9/zUX\n        EP8zFA7/PBwT/1QxJP9lQTT/bUY4/2ZAM/9YMSf/TSce/0giGv9IIxv/SSMb/0okHP9KJBz/SiQc/0ok\n        HP9KJBz/SiQc/0okHP9KJBz/SiQc/0okHP9KJBz/SiQc/0okHP9JIxv/RyIa/0EdF/80Fw//Uish/0gi\n        G/9JIxv/SSMb/0chGv9AHRb/NBUP/08vJP9/WUz/YTgw/0ggG/9HHxv/SSIc/1MtJf9qSVv/lXKf/7eN\n        xf/Lndv/06Pj/9Wl5v/Vpeb/1aXm/9Wl5v/Wpeb/1qXm/9al5v/Wpeb/1aXm/9Wl5v/Vpeb/1aXm/9Wl\n        5v/Vpeb/1aXm/9Wl5v/Vpeb/1qXm/9al5v/Wpeb/1qXm/9Wl5v/Wpeb/1aXm/9al5mYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADVpOZm1aTm/9Wk5v/VpOb/1aXm/9Wk5v/VpOb/1aXm/9Wk5v/VpOb/1aXm/9Wk5v/VpOb/1aXm/9Wk\n        5v/Vpeb/1aXm/9Wl5v/VpOb/1aTm/9Wk5v/VpOb/1aXm/9Wk5f/UpOX/z6Df/8CUz/+kfrD/e1hz/2U/\n        Of9bMin/Vy4m/1cuJf9eNSv/f1hL/2RBNP84GRH/PxwV/0UgGf9FIRn/RCAY/0MfF/9IJRv/UC4i/2dB\n        Mv9tRzn/ZDwx/1YvJf9MJh7/SiQc/0kkG/9JJBv/SiQb/0okHP9KJBz/SiQc/0okHP9KJBz/SiQc/0ok\n        HP9KJBz/SiQc/0okHP9JIxv/RyEa/zcYEf9NKB7/SyUc/0okG/9KJBz/SSQb/0gjG/9DHxj/NxgR/0gp\n        H/99V0n/YTgv/0oiHP9IIRv/SyMd/1gyLf9xT2b/n3ur/72TzP/OoN7/1KXl/9Wm5v/Wpuf/1qbm/9am\n        5v/Wpub/1qbm/9am5v/Vpub/1abm/9Wm5v/Vpub/1abm/9Wm5v/Vpub/1abm/9Wm5v/Wpub/1qbm/9am\n        5v/Wpub/1abm/9am5v/Vpub/1qbmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWm52bVpub/1qbn/9am5v/Wpub/1qbm/9am\n        5v/Wpub/1abm/9Wm5v/Vpub/1qbm/9am5v/Wpub/1qbm/9am5//Wpub/1abm/9Wm5v/Vpub/1abm/9Wm\n        5//Vpub/1Kbl/9Kj4v/Fmtb/q4W6/4NihP9oQT7/XzYs/1gvJ/9YLyf/YDYt/4BYS/9ePC//OBgR/0Qf\n        GP9JJBv/SiQc/0okHP9KJBz/SSQb/0gjG/9GIhn/Qh4W/0MgF/9XNCf/ZEAy/3BIOv9mQDP/VS8l/0wm\n        Hf9KJBv/SiUc/0smHf9LJh3/SyYd/0smHf9LJh3/SyYd/0smHf9LJh3/SyYd/0olHP9JIxv/QR4W/0Ih\n        GP9PKR//SiUb/0smHf9LJh3/SyUd/0okHP9GIhr/OxoT/0AhGP97VUf/Yzsx/0kiHP9JIRv/TiYf/1s1\n        Mf96W3j/p4K0/8OY0v/RpOL/1afm/9an5v/Wp+b/1qfm/9an5v/WqOf/1qjn/9ao5//WqOf/1qjn/9ao\n        5//WqOf/1qjn/9ao5//WqOf/1qjn/9ao5//WqOb/1qjm/9ao5v/WqOb/1qjn/9ao5//WqOdmAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA1qfnZtan5//Wp+f/1qfn/9an5//Wp+f/1qfm/9an5v/WqOf/1qjn/9ao5//WqOf/1qjn/9ao\n        5v/WqOb/1qjn/9ao5//WqOf/1qjn/9ao5//WqOf/1qjn/9ao5//UpuT/zKDc/7WOw/+Rb5f/bkpO/2M6\n        MP9cMin/WzEo/141K/+AWUv/Y0Az/zkZEf9FIRj/SyUd/0wmHv9MJh7/TCYe/0wmHv9MJh7/SyYd/0sl\n        Hf9KJRz/SSQb/0ciGv9FIRj/RyUb/1UwJf9rRzf/bkc5/2I7L/9TLST/TCce/0slHf9LJR3/TCYe/0wm\n        Hv9MJh7/TCYe/0wmHv9MJh7/TCYe/0slHf9HIhr/PRwU/1MsIv9LJh3/TCYe/0wmHv9MJh7/TCYe/0sl\n        Hf9IIxr/PBsT/0QlG/99V0n/XTQs/0ojHP9JIhz/USoi/2E9Pv+JaY3/soy//8qf2f/Up+T/1qjm/9ao\n        5v/WqOb/1qjm/9ap5//WqOf/1qjn/9ap5//Wqef/1qnn/9ap5//Wqef/1qnn/9ep5//Xqef/16nn/9ep\n        5//Wqef/1qnn/9ap5//Xqef/1qnn/9eq52YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWqOdm1qjn/9ao5//WqOf/1qjn/9ao\n        5//WqOb/1qjm/9ap5//Wqef/1qnn/9ap5//Wqef/1qnn/9ap5//Wqef/1qnn/9ep5//Wqef/1qnn/9ap\n        5//Wqef/1qnm/9Gl4P/BmND/oH6r/3dVZP9pQDX/XjQr/10zKv9eNCv/eVFE/21JPP88HBT/RiIZ/0wm\n        Hf9NJx7/Ticf/04nH/9OJx//Ticf/04nH/9OJx//Ticf/04nHv9NJx7/TCYd/0slHf9KJRz/RiIZ/0Mg\n        F/9LKR3/Wjcq/25IOP9wSjv/XDUq/00oHv9KJRz/TCYe/00nH/9OJx//Ticf/04nH/9OJx//TSce/0ol\n        HP89GxT/UCog/04oH/9NJx7/Ticf/04nH/9OJx//Ticf/00mHv9JJBv/OxsT/0YnHP+AWEz/WC8o/0oi\n        Hf9LJB3/Vy8m/2tIVf+aeaT/v5bM/8+k3//Wqeb/16nn/9eq5//Xqef/16rn/9ep5//Xqef/16rn/9eq\n        5//Xquf/16rn/9eq5//Xquf/16rn/9eq5//Xquf/16rn/9eq5//Xquf/16rn/9eq5//Xq+f/16vnZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAANap52bWqef/1qnn/9ap5//Wqef/16nn/9ap5//Wqef/1qrn/9ap5//Wqef/1qnn/9ap\n        5//Wqef/1qnn/9ep5//Xquf/16rn/9eq5//Xquf/16rn/9aq5v/UqOT/yZ/X/6+LvP+FY3//b0hB/2I5\n        Lv9fNSv/XjUr/3NLP/95U0b/PBsT/0YhGv9NJx7/Tygf/08oH/9PKB//Tygf/08oH/9PKB//Tygf/08o\n        H/9PKB//Tygf/08oH/9PKB//Tigf/00nHv9LJR3/SyUc/1EsIv9YNCj/Tyog/08qIP9tRjz/d1BC/2pD\n        Nv9XMif/Tigf/00nHv9OKB7/Tygf/08oH/9PKB//TSce/0ciGv9GIxn/Uy0j/04oH/9PKB//Tygf/08o\n        H/9PKB//Tygf/04oH/9JJBv/OhoS/1UzKP97U0b/UCgh/0wlHv9OJh//Xjgx/3lZcv+riLf/xp3V/9So\n        5P/Wq+b/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er\n        5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+dmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA16vnZter5//Xq+f/16vn/9er\n        5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er5//Xq+f/16vn/9er\n        5//Xq+f/1qrm/9Gm4f+9l8v/nHul/3VPVP9pQDT/YDcs/2A2LP9lPDH/hF5Q/0opH/9EIBj/Ticf/1Ap\n        IP9QKSD/UCkg/1ApIP9QKSD/UCkg/1ApIP9QKSD/UCkg/1ApIP9QKSD/UCkg/08pH/9OKB//TSce/1cx\n        Jf9wSDz/eU1D/2kzM/9VFyL/RAcV/0cFGP9YFiX/aDQ0/3tQRv93UUP/XDYq/04nH/9NJx7/Tygf/1Ap\n        IP9PKB//TCYe/0IfF/9VLiT/Tykf/1ApIP9QKSD/UCkg/1ApIP9QKSD/UCkg/08oH/9JJBv/ORoR/2tI\n        Of9rQzn/TiYf/0wlHv9ULST/ZUFC/5V2nf+6lcj/0Kbg/9ar5v/XrOf/16zn/9es5//XrOf/16zo/9es\n        5//XrOf/16zn/9es5//XrOf/16zn/9es5//XrOf/16zn/9es6P/XrOf/16zn/9es5//XrOf/16zn/9es\n        52YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADXrOdm16zn/9es5//XrOj/16zn/9es5//XrOf/16zo/9es5//XrOf/16zn/9es\n        5//XrOf/16zn/9es5//XrOf/16zn/9es5//YrOf/16zn/9es5//UquT/yqLZ/6uIuP+EYnn/cEg8/2Q7\n        MP9iOS7/ZDsw/4NbTv9aNir/QR4W/08oIP9RKiH/Uisi/1IrIv9SKyL/Uisi/1IrIv9SKyL/Uisi/1Ir\n        Iv9SKyL/Uisi/1EqIf9PKB//USoh/143LP91Sz//fEVF/3IiOf93CD7/jQVS/54HY/+hB2f/pAdq/6AH\n        Zv+MBVH/cgc6/2wdM/97RUX/fVFG/2hBNv9WMCb/Tigf/08oIP9PKR//SCMb/1ErIf9SKyH/USoh/1Ir\n        Iv9SKyL/Uisi/1IrIv9SKyL/USoh/1ApIP9GIRn/ORoS/31XSP9fNi3/TiYf/04mH/9cNSr/d1dp/6aF\n        sv/Iodf/1Kvk/9iu6P/Yruj/2K7o/9iu6P/Yruj/2K7o/9iu6P/Yruj/2K7o/9iu6P/Yruj/2K7o/9iu\n        6P/Yruj/2K7o/9iu6P/Yruj/2K7o/9iu6P/Yruj/2K7oZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANit6GbYrej/2K3o/9it\n        6P/Yrej/2K3o/9it6P/Yrej/2K3o/9it6P/Yrej/2K3o/9it6P/Yrej/2K3o/9it6P/Yrej/2K3o/9it\n        6P/Yrej/163n/9Kp4f/Bm8//mXmg/3pVWP9qQjX/ZDow/2M6L/9yST3/fFZI/0AeFf9MJh3/Uish/1Ir\n        Iv9SKyL/Uisi/1IrIv9SKyL/Uisi/1IrIv9SKyL/Uisi/1IrIf9RKiH/USoh/1s0Kf90Sj//ekJC/3cf\n        Pf+IDE3/ogdo/7MIfP+6CYT/vAmG/70Jh/+9CYf/vAmH/7kJg/+xCHn/nwZl/4UJSf90GDr/dTk9/35S\n        SP9qQjb/VS8l/08pH/9LJhz/TCgd/1UtJP9SKiH/Uisi/1IrIv9SKyL/Uisi/1IrIv9SKyL/Uish/04o\n        H/8/HhX/VjQp/3ZOQv9RKSH/Tycf/1UtJP9qRUX/kXKV/72azP/QqeD/167n/9iv6P/Yr+j/2K/o/9iv\n        6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv\n        6P/Yr+hmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA2K7oZtiu6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv\n        6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Yr+j/2K/o/9iv6P/Wrub/y6Xb/7ORwP+GZHr/dExD/2Y9\n        Mv9lPDH/Zz4z/4JbTv9SLyT/SSQb/1MrIv9ULCP/VCwj/1QsI/9ULCP/VCwj/1QsI/9ULCP/VCwj/1Qr\n        I/9SKyL/Uish/102Kv9zST3/ekJC/3kcPf+MCFD/rwh0/74Kh//BCon/wQqJ/8AKiP/ACoj/wAqJ/8AK\n        if/ACon/vwqI/78KiP+/Coj/vAqE/7AIdv+PBlP/cQ02/3E2Ov96T0T/bEU4/1MtI/9HIxr/Vy8l/1Ms\n        Iv9ULCP/VCwj/1QsI/9ULCP/VCwj/1QsI/9ULCP/Uysi/00nHv87GhL/cU0//2Q7Mf9RKCH/USgh/2A5\n        L/94WGn/r4+8/8mk1//WruX/2LDn/9iw6P/YsOj/2LDo/9iw6P/YsOj/2LDo/9iw6P/YsOj/2LDo/9mx\n        6P/Ysej/2bHo/9mx6P/Ysej/2LHo/9ix6P/Zsej/2bHo/9mx6GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYr+hm2K/o/9iv\n        6P/Yr+j/2K/o/9iv6P/Yr+j/2LDo/9iw6P/YsOj/2LDo/9iw6P/YsOj/2LDo/9iw6P/YsOj/2LDo/9iw\n        6P/YsOj/2LDo/9Wu5P/EoNL/pYaw/3xXWP9vRzr/Zz4y/2c+Mv91TUH/dE5B/0IgF/9RKiH/VS0k/1Ut\n        JP9VLST/VS0k/1UtJP9VLST/VS0k/1UtJP9ULCP/Uywj/1s0Kf9uRTn/dkM+/3IfOP+LDE7/rglz/74K\n        hf/DCor/xAqL/8MKi//DCov/wguL/8IKif/CCon/wgqJ/8IKiP/BC4f/wQuI/8IKif/CCon/wgqJ/74K\n        hP+vCXT/iQdL/2URLf9nNDL/dExA/1gzJ/9ULSP/VC0j/1UtJP9VLST/VS0k/1UtJP9VLST/VS0k/1Ut\n        JP9VLST/Uisi/0MgGP9LKh//elNG/1UtJf9RKSH/WTEn/2pFQ/+egKf/wJ7O/9Su4//Ysef/2LHo/9mx\n        6P/Zsej/2bHo/9mx6P/Zsej/2LHo/9ix6P/Ysej/2bHo/9ix6P/Zsej/2bHo/9ix6P/Ysej/2LLo/9my\n        6P/Zsej/2bLoZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAANmx6GbZsej/2LHo/9ix6P/Zsej/2bHo/9mx6P/Ysej/2bHo/9mx\n        6P/Ysej/2bHo/9ix6P/Ysej/2LHo/9ix6P/Zsej/2bHo/9mx6P/Ysef/0avg/7qYx/+VdZb/elJH/2xD\n        N/9oQDP/akE1/4VeT/9SLyP/SiUc/1UuJP9WLyX/Vi8l/1YvJf9WLyX/Vi8l/1YvJf9WLyX/VS4k/1gw\n        Jv9kPDD/cUU7/2YnL/93Cjr/pwhp/8ILh//HC47/xwuM/8YLi//GC4r/xQuK/8ULiv/FC4n/xAuJ/8QL\n        if/EC4n/xAuJ/8QLif/EC4n/xAuJ/8QLif/EC4n/xAuJ/8QLif++CoL/owhk/2oFMP9NFRz/ZDsx/2A5\n        LP9XLyX/VS4k/1YvJf9WLyX/Vi8l/1YvJf9WLyX/Vi8l/1YvJf9VLiT/Tigf/zwcFP90TkD/Yjkv/1Mr\n        Iv9VLCT/ZT0y/4prh/+1lsP/0Kzf/9ey5//Zs+j/2bPo/9mz6f/Zs+j/2bPp/9mz6P/Zs+j/2bPo/9mz\n        6P/Zs+n/2bPo/9mz6P/Zs+n/2bLo/9my6f/Zsuj/2bLo/9mz6f/Zs+lmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2bLoZtmy\n        6P/Zsuj/2bLo/9my6P/Zsuj/2bLo/9my6P/Zsuj/2bLo/9my6P/Zsuj/2bLo/9my6P/Zsuj/2bLo/9my\n        6P/Zsuj/2bLo/9ex5v/MqNv/rY+5/4dkc/93TkH/a0E2/2pBNf9zSj7/fFZH/0YjGv9TLCL/VzAm/1gw\n        Jv9YMCb/WDAm/1gwJv9XLyb/Vy8m/1oyKP9iOi7/YTou/1QrI/9UDR//jQhO/7wLff/JDIz/ygyO/8oM\n        jv/JDI3/yQyN/8kMjv/IDIz/yAyM/8cMiv/HDIr/xwuJ/8YLiP/GC4n/xguJ/8YLif/GC4n/xguJ/8YL\n        if/GC4n/xwuJ/8cLiv/DC4b/rQls/3gFOv9FBhX/RSAZ/1gyJ/9VLST/Vy8m/1gwJv9YMCb/WDAm/1gw\n        Jv9YMCb/WDAm/1cvJv9TLCL/RiMZ/1IyJ/9zSz7/VSwk/1QrI/9fNyz/d1Vf/6iKs//Kp9n/1rHm/9m0\n        6f/ZtOn/2bTp/9m06f/ZtOn/2bTp/9m06f/ZtOn/2bTp/9m06f/ZtOn/2bTp/9m06f/ZtOn/2bTp/9m0\n        6f/ZtOn/2bTp/9m06WYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZs+lm2bPp/9mz6f/Zs+n/2bPp/9mz6f/Zs+n/2bPp/9mz\n        6f/Zs+n/2bPp/9mz6f/Zs+n/2bPp/9mz6f/Zs+n/2bPp/9mz6f/Zs+n/1bHl/8ek1f+jhKn/h2Jj/3JI\n        PP9sQjf/a0E2/31VSP9kQDT/SyUd/1cwJv9YMSf/WTEn/1kxJ/9ZMSf/WDAn/1gwJ/9hOS7/a0I1/103\n        Kv9LJh3/QxMW/4AGQP/ADH//zQ2Q/80Nj//NDY//zA2O/8wNjv/LDY3/yw2N/8sNjP/LDY3/yg2K/8oN\n        iv/KDYr/yQ2K/8kNi//JDYr/yQyK/8gLif/IC4n/yAuK/8kMi//JDIv/yQyL/8kMiv/FC4b/rAlp/3MF\n        NP87ChH/Uywi/1UtJP9YMCb/WTEn/1kxJ/9ZMSf/WTEn/1kxJ/9ZMSf/WDAm/1gxJv9RLSL/MxcQ/3tV\n        SP9cMin/VSwk/1gvJ/91T07/m32g/8Oi0f/VseT/2bTp/9q16f/aten/2rXp/9q16f/aten/2rXp/9q1\n        6f/aten/2rXp/9q16f/aten/2rXp/9q16f/aten/2rXp/9q16f/aten/2rXpZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANm0\n        6WbZtOn/2bTp/9m06f/ZtOn/2rTp/9q06f/ZtOn/2bTp/9m06f/ZtOn/2bTp/9m16f/Zten/2bXp/9m1\n        6f/Zten/2bXp/9m16P/UsOL/wJ/N/5Z4k/+BWlH/bkU5/25EOf9vRTr/hV9R/04qH/9TLCP/WjIo/1sy\n        KP9bMij/WjIn/1oxJ/9hOC3/a0M2/2Q+MP9SLCL/Uisi/00lHf9bDCP/swxv/9APkP/VLpz/9dzu//HS\n        5v/QF5L/zxCO/88Qjv/UNJz/9+jz/+6+3v/OF4//2U6q//ry+f/ihsL/zA2K/8sNiv/hiMD/+e/3//ny\n        +f/58vn/+vL5//ry+f/47fb/3nu6/8sMiv/FDIL/pAlf/1QFHv9MIx3/VS4l/1kxJ/9bMij/WzIo/1sy\n        KP9bMij/WzIo/1oyJ/9YMSf/Xzgs/0AgFv84GRD/bEY4/2pBNv9XLib/Vi4l/2tDOv+KbIP/vJ3J/9Kw\n        4f/Ztej/2rbp/9q26f/atun/2rbp/9q26f/atun/2rbp/9q26f/atun/2rbp/9q26f/atun/2rbp/9q2\n        6f/atun/2rbp/9q26f/atulmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2rXpZtq16f/aten/2rXp/9q16f/aten/2rXp/9q1\n        6f/aten/2rXp/9q16f/aten/2rbp/9q26f/atun/2rbp/9q26f/atun/2bXo/9Gv3/+5m8b/knKE/4BY\n        TP9vRTr/b0U6/3ZNQf99V0n/RyMa/1kwJ/9cMyn/XDMp/1wyKf9dNCr/akE1/21FN/9ZMyf/VC0j/1cw\n        Jv9VLST/TiAc/3gKOP/KD4f/1BGT/9MSkv/vwN7/+/j7/9c9n//RE4//0ROP/+B1uP/8/P7/5I7E/88S\n        jv/cUq7//Pz+/+SMxP/OD4r/zg6K//HG4//58ff/557K/+WVxf/llcT/5pnH//z8/v/uwN3/zg2K/80M\n        if+/C3r/dgY2/0oYGf9ZMSf/WjEn/1wzKf9cMyn/XDMp/1wzKf9cMyn/WzIo/101Kv9UMCX/QyEY/0Yi\n        Gv9WMif/d09D/1kvJ/9YLib/Zz8z/4Rjcf+1mML/z67d/9m36P/at+n/2rfp/9q36f/at+n/2rfp/9q3\n        6f/at+n/2rfp/9q36f/at+n/2rfp/9q36f/at+n/2rfp/9q36f/at+n/2rfp/9q36WYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADat+lm2rfp/9q36f/at+n/2rfp/9q36f/at+n/2rfp/9q36f/at+n/2rfp/9q36f/at+n/2rfp/9q3\n        6f/at+n/2rfp/9q36f/Ztuj/zazc/7GVvv+MaG//fVRH/3FHPP9xRzz/gVlM/2pEN/9LJx3/XDMp/100\n        Kv9eNSr/Zz4z/3FJO/9gOi3/USsh/1oxJ/9cMyn/WzIo/1YvJf9UFx//nQ1W/9QUkP/WFZL/1RaR/+Fn\n        s//7+Pz/5orD/9QYkf/UHJL/77zd//ny+P/aQ6L/0xaP/95Vrf/8/P7/5o3G/9IRjP/SEI3/88zn//bm\n        8f/VJpf/0Q+L/9EOi//SF47//Pz+//DF4P/QDor/0A6J/84Oh/+gClj/UQsb/1oyJ/9aMSf/XjUr/141\n        K/9eNSv/XjUr/101Kv9dNCr/Yzsv/0QhF/9TLSP/USsh/0knHv97UkX/XDMp/1kxJ/9kOzD/elVY/6yR\n        t//LrNn/2bjo/9u56v/buer/27nq/9u56v/buer/27nq/9u56v/buer/27nq/9u56v/buer/27nq/9u5\n        6v/buer/27nq/9u56v/buer/27nqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANq46mbauOn/2rjp/9q46f/auOr/2rjq/9q4\n        6v/auOr/2rjp/9q46f/auOn/2rjp/9q46f/auOr/2rjq/9q46v/auOr/2rjp/9m36P/Kq9j/qo+1/4hi\n        YP95UEP/ckk9/3JJPf+GXlH/Wzcr/1IsIf9eNSv/Yjku/3BJO/9rRTf/Uy4j/1YvJP9cMyn/XjUr/181\n        K/9bMyn/VC0j/2MRJ/+1EWv/2BiT/9gZkv/XG5L/3EGh//bg7f/wvt3/2CyW/9tFof/23u3/8cjg/9gv\n        mP/VG5D/4Fmu//z8/v/nj8X/1BSL/9QTi//0zef/9ubx/9cnlv/TD4r/0w+K/9QZj//8/P7/8MXg/9MO\n        if/SDoj/0g6I/7sMb/9oByn/Vy4k/1oyJ/9fNiv/XzYs/182LP9fNiz/XTUq/2M7L/9QLCH/Tykg/1sy\n        KP9YMCb/RyQa/3dQQv9hOC7/WzIo/2E3Lf9yTEf/o4iq/8iq1f/YuOf/2rrp/9u66v/buur/27rq/9u6\n        6v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9u66v/buupmAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA27nqZtu56v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9u6\n        6v/buur/27rq/9u66v/auen/2Ljn/8ep1f+miqv/jWhg/3lQQ/90Sz7/dUs//4RcT/9RLSL/WDEm/21F\n        Of9zTD3/WTUo/1ErIf9cNCn/XjUr/2A3LP9gOCz/YTct/1szKf9RKiH/eQ42/8cXff/aHZH/2h+S/9kh\n        kv/aK5X/7arT//fn8f/gV6n/5Xi5//ny+P/oj8T/2CWS/9chkP/iXa7//Pz+/+mQxv/XGI7/1xaM//TN\n        5//35vH/2SiV/9YQif/VEIr/1xmO//z8/v/xxd//1RCJ/9UQif/VEIn/yw9+/4kHQP9QIh7/WjMo/182\n        LP9hOC3/YTgt/2A3LP9hOC7/Xzgs/0snHP9cNCn/XzYs/100Kv9JJBv/bko9/2g/NP9dMyr/XzUs/3dQ\n        Rv+dgJ7/xKfR/9e35v/buun/27rq/9u66v/bu+r/27vq/9u66v/bu+r/27rq/9u66v/bu+r/27rq/9u7\n        6v/bu+r/27vq/9u76v/cu+r/3Lvq/9y76mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbuupm27rq/9u66v/buur/27rq/9u6\n        6v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9u66v/buur/27rq/9q66f/XuOb/xafR/6OF\n        ov+OaV7/eVBD/3ZMQP93TkH/gltN/1YxJf9wSTv/ZUAy/08rIP9XMSb/XjUr/2E4Lf9iOC7/Yjku/2I5\n        Lv9hOC3/WzMo/1EkH/+QEUb/0h6H/9wjkf/bJ5L/2ymT/9sslP/jb7L/+vb6/+iRw//vu9n/+e72/+Bf\n        qf/aLJL/2iqS/+Rjsf/8/P7/6pPG/9ocjf/aGoz/9c7n//fn8f/cKpX/2RKI/9kRif/ZGo3//Pz+//LF\n        3//YEIj/2BCI/9gQiP/UD4T/qAtX/1EYHP9bMyn/Xzcs/2I5Lv9iOS7/YTgt/2c+M/9OKh//WDEm/2A3\n        LP9hOC3/Xzcs/00oHv9nQzf/bkU5/141K/9fNiv/d1BE/5l7k//Bpc7/1rjk/9u76f/bvOr/27zq/9y8\n        6v/cvOr/3Lzq/9y86v/cvOr/3Lzq/9y86v/bvOr/27zq/9u86v/bvOr/3Lzq/9y86v/cvOr/3LzqZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAANy76mbbu+r/3Lvq/9y86v/cvOr/3Lvq/9y76v/cu+r/27vq/9u76v/bu+r/27vq/9u7\n        6v/bu+r/27vq/9u76v/bu+r/27vp/9e35f/Dps//oIGZ/45oW/95UEP/d05B/3pRRP+CXEz/XDcp/1Eu\n        Iv9PKiD/XTQq/2E4Lf9iOS7/Yzov/2Q6MP9kOjD/ZDow/2I5Lv9aMij/VB4f/6QXVf/YJoz/3SuS/90u\n        kv/dMpT/3DaV/91Dmv/46/T/9Nfo//nv9v/00eX/3D6Y/9s2lP/cM5P/5Wiw//z8/v/rlsf/3CKP/9we\n        jv/1z+f/+Ofx/98slf/cFYn/2xOI/9wajf/8/P7/8sXf/9oQhv/aEYb/2RCG/9gQhf++Dmn/WhAd/1ox\n        J/9fNyz/Yzov/2I5Lv9mPTH/WzQp/1QtI/9gNyz/Yzkv/2M6L/9iOS7/UCsg/145Lf9zSj7/YDYs/2A2\n        LP91TUH/lHaJ/76ky//WuOT/273q/9y96//cvev/3L3r/9y96//cvev/3L3r/9y96//cvev/3L3r/9y9\n        6//cvev/3L3r/9y96//cvev/3L3r/9y96//cvetmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3L3rZty96v/cver/3L3q/9y9\n        6v/cver/3L3q/9y96v/cver/3L3q/9y96v/cver/3L3q/9y96v/cver/3L3q/9y96v/bver/17nl/8Gm\n        zf+dfpH/jWZZ/3pRRP94UEL/fFNG/3VRQ/87HRP/Vi8k/2A3Lf9jOi//ZDsw/2U8Mf9lPDH/ZTwx/2U8\n        Mf9lPDH/Yzov/1gwJv9dGSL/uSBo/90tj//eNJP/3TmV/949lv/dQZb/3USX/+6u0P/7+v3/+/v9/+qW\n        wv/dRJj/3UGW/90+lv/mcLP//Pz+/+2Zx//eKpD/3yWO//bQ5//45/H/4S+V/94Xif/eFYf/3x2M//z8\n        /v/zxd7/3BGD/9wRg//bEYP/2xCD/80Pdf9qCyb/WCsk/183LP9jOi//ZTsw/2U9Mv9SLCL/YDct/2M6\n        L/9lPDH/ZTwx/2M6L/9ULiT/VjEm/3ZNQf9hOC3/YTgt/3NKP/+Mbnz/vKLJ/9W44//bvur/3L7r/9y+\n        6//cvuv/3L7r/9y+6//cvuv/3L7r/9y+6//cvuv/3L7r/9y+6//cvuv/3L/r/9y/6//cv+v/3L/r/9y/\n        62YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADcvutm3L7r/9y+6//cvuv/3L7r/9y+6//cvuv/3L7r/9y+6//cvuv/3L7r/9y+\n        6//cvuv/3L7r/9y+6//cvuv/3L7r/9y+6v/XuuX/wabN/51+jv+NZln/e1JF/3pRRP9+VUj/b0w+/0Yj\n        Gf9fNiv/ZTsx/2Y9Mv9mPTL/Zj0y/2Y9Mv9mPTL/Zj0y/2Y9Mv9jOi//Vy4l/2UYJv/HKXb/3zaR/988\n        k//fQpb/3keY/95LmP/eTpj/5oO2//rz+P/47fT/43Gs/95Pmf/eS5j/3keY/+d3tP/8/P7/7ZzI/+Aw\n        kf/hKo//9tHn//jn8f/kMpX/4RqI/+AWhv/hH4v//Pz+//TG3v/fE4T/3hKD/94Sgv/dEoL/1RF5/3cJ\n        LP9TJCD/YDcs/2M7L/9rQjb/VzIm/1w0Kv9kOzD/ZT0x/2Y9Mv9mPTL/ZTwx/1cwJv9SLiL/eE9D/2M5\n        L/9jOS//cko9/4xtef+8o8j/1bnj/9y/6v/cv+v/3L/r/9y/6//cv+v/3b/r/92/6//cv+v/3L/r/9y/\n        6//cv+v/3L/r/92/6//dwOv/3cDr/93A6//dwOv/3cDrZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANy/62bcv+v/3L/r/9y/\n        6//cv+v/3L/r/9y/6//cv+v/3L/r/9y/6//dv+v/3L/r/9y/6//cv+v/3L/r/9y/6//cv+v/3L/q/9e7\n        5f/BqM3/noCP/41nWf98U0b/fFNG/39XSf9sSTz/SSQb/2I5Lv9nPzP/Zz8z/2c/M/9nPzP/Zz8z/2c/\n        M/9nPzP/Zz4z/2M6L/9XKyP/cxkt/9M0gP/gQJL/4EeU/99Nlv/eU5f/3leZ/95bm//liLX/+fD2//fn\n        7//id6v/3lyb/95Ymf/fVJj/53+z//z8/v/toMf/4jmR/+Iyj//30+f/+Ofx/+U2k//jHYj/4xmF/+Qg\n        if/8/P7/9Mbe/+EUg//hFIH/4BSB/+ATgP/ZEnj/hQk1/04bG/9fNyv/Zz4y/2I7L/9bMyn/ZTwx/2c+\n        M/9nPzP/Zz8z/2c/M/9nPjL/WDIn/1AsIP94UET/ZDsw/2Q7MP9zSj7/jnB6/7ykyP/Vu+T/3MHr/93B\n        7P/dwez/3cHs/93B7P/dwez/3cHs/93B7P/dwez/3cHr/93B6//dwev/3cHs/93B6//dwev/3cHr/93B\n        6//dwexmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA3cDrZt3A6//dwOv/3cDr/93A6//dwOv/3cDr/93A6//dwOv/3cDr/93A\n        6//dwOv/3cDr/93A6//dwOv/3cDr/93A6//cwOv/2Lzm/8Kpzv+ggpH/j2lc/35VSP99VEf/gFdK/29L\n        Pv9KJhz/Yzov/2k/NP9pQDT/aUA0/2lANP9pQDT/aUA0/2lANP9pPzT/Yzov/1YnIv+CHTj/2j6I/+BI\n        k//gUJb/3leW/95dmf/eYpv/3Wac/+240P/7+/3/+/n8/+edvv/dZ5z/3WOa/95fmv/nh7T//Pz+/+2l\n        yf/hQ5L/4zuP//fU5//45/H/5zmT/+Ugh//lHIT/5iKI//z8/v/1xt3/4xWA/+MUgP/iFH//4RR+/9sT\n        d/+PCjr/SRIV/183LP9pQDT/WTMn/2Q7MP9nPzP/aUA0/2lANP9pQDT/aUA0/2g+M/9ZMij/Uy8j/3lQ\n        RP9mPTL/ZTwx/3VMQf+Qcnz/vaXJ/9a75f/dwev/3cHs/93C7P/dwuz/3cLs/93C7P/dwuz/3cHs/93B\n        7P/dwuz/3cHs/93B7P/dwez/3cLs/93C7P/dwez/3cHs/93B7GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdwuxm3cHs/93C\n        7P/dwez/3cHs/93B7P/dwez/3cLs/93C7P/dwuz/3cLs/93B7P/dwez/3cHs/93B7P/dwez/3cHs/9zB\n        6//Yvuf/w6vR/6OFlv+TbmD/f1dJ/39WSP+AWEv/ck5A/0snHP9kPDD/akA1/2tBNv9rQTb/a0E2/2tB\n        Nv9rQTb/a0E2/2lANf9iOS//VyUh/5EmQv/dSYz/31OT/95blv/eY5f/3WiZ/9xtm//cdJ7/9+nw//ft\n        8v/69vn/8dTh/9tynP/cb5z/3Wqb/+aQtP/8/P7/7arI/+BOkf/hRI7/9tbn//jo8f/nQJL/5SaG/+Yg\n        g//nJof//Pz+//bG3f/lF3//5RZ+/+QVfP/kFXz/3BN0/5QLOv9FDBL/Yjot/1w2Kv9iOi//aT80/2pA\n        Nf9rQTb/a0E2/2tBNv9rQTb/aUA0/1kyJ/9XMyb/d09C/2c+M/9nPjP/eVFE/5J0f/+/qMz/173l/93C\n        6//dwuz/3cLs/93C7P/dwuz/3cLs/93C7P/dwuz/3cLs/93C7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D\n        7P/ew+z/3sPsZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN3C7Gbdwuz/3cLs/93B7P/dwuz/3cLs/93C7P/dwuz/3cLs/93C\n        7P/dwuz/3cLs/93C7P/dwuz/3cLs/93C7P/dwuz/3cLr/9q/6P/Hr9T/qIue/5ZyZv+BWUz/f1dK/4BZ\n        S/92UkL/TCgd/2Q8MP9rQTb/bEE3/2xBN/9sQTf/bEE3/2xBN/9sQTf/akA1/2I5Lv9XIiD/nC9M/95S\n        jf/eXJP/3WSW/91smP/ccZr/23ac/+KZtP/7+Pv/7MbU//HX4P/47vP/3oup/9t4nP/bdJv/5Ze1//z8\n        /v/trsj/31eR/+BOjv/22Of/+Ojw/+ZGkf/lLYT/5SaC/+cqhv/8/P7/9sfc/+cXff/nF3z/5hZ6/+YW\n        ef/bFG//jws1/0MKEP9aMyf/XTUr/2lANP9rQTb/bEE3/2xBN/9sQTf/bEE3/2xBN/9qQDX/VzEm/146\n        LP92TkH/aUA0/2g/NP9+Vkr/mXyL/8Osz//Zv+f/3cPr/97D7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D\n        7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D7P/ew+xmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3sPsZt7D\n        7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D7P/ew+z/3sPs/97D\n        7P/dw+v/28Hp/8qy1/+tkqn/nHlu/4NbTv+BWUz/gVlM/35YSf9PKyD/ZDsv/21COP9uQzn/bkM5/25D\n        Of9uQzn/bkM5/25DOf9rQTb/YTku/1QgHv+dN0//3VuO/91kkv/dbJb/23OY/9p5m//af53/68LR//n1\n        +P/ipLj/57XF//r2+f/nssP/2n+d/9p8nP/knbf//Pz+/+yyyf/eYJL/31aO//ba5//46fD/5U2P/+Qz\n        gv/kLID/5jCD//z8/v/2x9z/5xx5/+gaef/oGHj/5xd3/9YTaP+CCiv/OQcL/08qH/9mPTH/bEI3/21D\n        OP9uQzn/bkM5/25DOf9uQzn/bUM4/2pBNf9VLyT/ZkI1/3VMP/9qQTX/a0E2/4VeUv+jiJv/x7DU/9rB\n        6P/dxOz/3sXs/97F7P/exez/3sXs/97F7P/exez/3sXs/97F7f/exez/3sXs/97F7f/exe3/3sXs/97F\n        7P/exez/3sXs/97F7GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADexOxm3sTs/97E7P/exOz/3sTs/97E7P/exOz/3sTs/97E\n        7P/exez/3sXs/97F7P/exez/3sXs/97F7P/exez/3sXs/97F7P/cw+r/zrfc/7KYtP+gfnX/hl9R/4Ja\n        TP+CWk3/glxL/1IvIv9iOi7/bUM4/29FOv9vRTr/b0U6/29FOv9vRTr/b0U6/2xCN/9jOy//USQd/4Mx\n        O//UX4f/3GuU/9t0l//aepn/2oCc/92SqP/15ev/9OXq/92Xqv/fnq//9+zx//HY4P/bjKP/2oKc/+Oh\n        tv/8/P7/67bJ/91ok//eXo//9tvn//jp8P/kUo//4zqB/+Qyfv/lNYH//Pz+//bI2//mIHb/5x53/+cd\n        dv/kGnL/xhRZ/2QIG/87EQ//XTYr/2pBNv9uRDn/b0U6/29FOv9vRTr/b0U6/29FOv9uRDn/akA1/1Mt\n        I/9uSTv/ckk9/2xCN/9uRDn/i2Va/6qQp//Mtdj/3MPq/97G7P/exuz/3sbs/97G7f/exu3/3sbt/97G\n        7f/exu3/3sbt/97G7f/exu3/3sbt/97G7f/fxu3/38bt/9/G7f/exu3/38btZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN7F\n        7Gbexez/3sXt/97F7P/exez/3sXs/97F7P/exe3/3sXt/97G7f/exu3/3sbt/97G7f/fxu3/38bt/97G\n        7f/fxu3/3sbt/93F6//Su9//t6C9/6F/eP+KY1b/g1xO/4NcTv+HYVH/WDUn/183K/9tQzj/cEY7/3BG\n        O/9wRjv/cEY7/3BGO/9wRjv/bkQ5/2U9Mf9WLCP/YSck/7pUbf/Zb5D/2nmW/9p/mf/ahJz/46i4//v4\n        +//szdb/2Y6g/9mPof/x3OL/+PL2/92Yqv/Zhp3/46W3//z8/v/ruMn/3G2S/95kj//23ef/+Orw/+NY\n        jv/iQID/4zd9/+U5f//8/P7/9cnb/+Yldf/mInX/5yB0/9wcaP+jEj7/SAwR/1MqIv9nPzP/bkQ5/3BG\n        O/9wRjv/cEY7/3BGO/9wRjv/cEY7/3BFO/9pPzX/USwi/3VOQP9wRzv/bUQ4/3JIPf+NZ17/sJmz/9C6\n        3P/dxuv/38ft/9/H7f/fx+3/38ft/9/H7f/fx+3/38ft/9/H7f/fx+3/38ft/9/H7f/fx+3/38ft/9/H\n        7f/fx+3/38ft/9/H7f/fx+1mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3sftZt7H7f/fx+3/3sft/97H7f/fx+3/38ft/9/H\n        7f/ex+3/3sft/97H7f/ex+3/38ft/9/H7f/fx+3/3sft/9/H7f/ex+3/3sbs/9a/5P++qsr/pIOD/5Fr\n        XP+FXU//hV1P/4hhU/9nQjP/WTMn/21DOP9xRzz/cUc8/3FHPP9xRzz/cUc8/3FHPP9wRjv/Zz4y/183\n        LP9YLSX/gTg8/8dmff/afZf/2oOa/9mHm//uz9f//Pz+/+Gqtv/Yj57/2I+e/+S3wf/7+/3/573H/9mJ\n        nP/jqLf//Pz+/+u7yf/bcpL/3WmO//bd5//46vD/41yN/+FEfv/iPXr/5D59//z8/v/1ytr/5Slz/+Um\n        cv/kJHD/vhtR/2MMG/9QJR3/ZTwx/25EOf9xRzz/cUc8/3FHPP9xRzz/cUc8/3FHPP9xRzz/cEY7/2U8\n        Mf9SLiP/fFRF/3BHO/9vRjr/eVBE/5Ftaf+5pcP/1L/i/97I7P/fyO3/38jt/9/I7f/fyO3/38jt/9/I\n        7f/fyO3/38jt/9/I7f/fyO3/38jt/9/J7f/fyO3/38jt/9/I7f/fyO3/38nt/9/J7WYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADfyO1m38jt/9/I7f/fyO3/38jt/9/I7f/fyO3/38jt/9/I7f/fyO3/38jt/9/I7f/fyO3/38jt/9/I\n        7f/fyO3/38jt/9/I7f/eyO3/2cPn/8ay0/+rjpf/mXRm/4ZeUP+GXlH/h2BR/3ZRQP9VMCT/a0I2/3JI\n        Pf9zST3/c0k9/3NJPf9zST3/c0g9/3FGPP9lPDH/Zj0x/2M6L/9hLSf/n09W/9R7kP/Zhpr/2Yqb//DZ\n        3//z4+f/2pej/9iSnv/Ykp7/3J6q//Pk6f/rzNP/2Iyc/+Cksf/15uv/57HA/9t2kv/cbY7/8crW//PS\n        3P/iXYr/4Uh9/+JAev/kQXz/99zl//Kxx//lLHD/5Cpw/9smZ/+RFjP/URoZ/2I6Lv9tQzj/ckg9/3NI\n        Pf9zST3/c0k9/3NJPf9zST3/c0k9/3NJPf9xRjz/Xzcs/1s2Kv99VUf/cUc8/3FHPP+BWkz/nX2C/8Gu\n        z//XwuX/38jt/9/J7f/fye3/38nt/9/J7f/fye3/38nt/9/J7f/fye3/38nt/9/J7f/fye7/38nu/9/J\n        7v/fye7/38nu/9/J7v/fye3/4MnuZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/J7Wbfye3/38nt/9/J7f/fye3/38nt/9/J\n        7f/fye3/38nt/9/J7f/fye3/38nt/9/J7f/fye3/38nt/9/J7f/fye7/38nu/9/J7v/cxuv/zrnb/7CY\n        qf+hfnL/iGBT/4dgUv+HYFH/g11N/1gzJf9oPzP/ckg9/3RKPv91Sj//dUo//3VKP/90ST7/cUc8/2Q8\n        MP9sQjf/bUM4/2A3LP9rMy7/s2Nr/9WElP/ZjJv/2I6c/9iRnv/Yk57/2JOd/9iUnv/Yk57/2JOe/9iR\n        nf/Yjpz/2YqZ/9mHl//agJX/2nmS/9xwjf/dZ4n/3l6E/99Vgf/gTHz/4UR4/+I+df/jOHP/5DRw/+Qw\n        b//fLGr/sSBG/14ZHP9eNCr/bUQ4/3NJPf91Sj//dUo//3VKP/91Sj//dUo//3VKP/91Sj//dEk+/29F\n        Ov9WMCX/bkc5/3lQQ/9yST3/ckg9/4pkV/+lipf/y7fY/9vG6f/gyu7/4Mru/+DK7v/gyu7/4Mru/+DK\n        7v/gyu7/4Mru/+DK7v/gyu7/4Mru/+DK7v/gyu7/4Mru/+DK7v/gyu7/4Mru/+DK7v/gyu5mAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA38nuZt/J7v/fye7/38ru/9/J7v/fye7/38nu/9/J7v/fye7/38nu/9/J7v/fye7/38nu/9/J\n        7v/fye3/38nt/9/J7v/fye7/38nu/97I7P/Uv+H/uKK6/6mKg/+MZVb/iGFS/4hhUv+HYFH/ZUAw/2I6\n        Lv9xRzz/dUs//3VLP/91Sz//dUs//3VKP/9ySDz/Zj0x/3BGO/9ySDz/a0I2/2E2LP99Pzz/vnJ6/9eL\n        mf/Yj5z/2JKc/9iUnf/YlJ3/2JWd/9iUnf/Yk53/2JKc/9iOm//YjJr/2YeX/9qBkv/aepD/3HKN/91p\n        h//eYIP/31Z//+BOev/hRnf/4UF1/+M8cf/jN27/4TNr/8IoU/90GSX/XC8n/2tBNv9zST3/dUs//3VL\n        P/91Sz//dUs//3VLP/91Sz//dUs//3VLP/90Sj7/akE1/1UvI/96U0X/dk1A/3RLPv91TD//l3Rr/7Ca\n        rv/Rvd7/3cnr/+DL7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL\n        7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgy+5m4Mvu/+DL7v/gy+7/4Mvu/+DL\n        7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7v/gy+7/4Mvu/+DL7v/gy+7/38vt/9nF\n        5//Dr8z/r5OV/5ZxYv+KY1T/imJU/4liU/93UUH/XDYp/25EOf92TED/d01B/3dNQf93TUH/dkxA/3JI\n        PP9mPjL/c0g9/3VLP/9zST7/a0E2/2E0Kv+ISUX/x3yE/9ePmf/Yk5v/2JSc/9eVnP/XlZz/15Wc/9iU\n        nP/Ykpv/2JCZ/9iMmP/ZiJb/2oGS/9p8j//cc4v/3GqH/95hgf/fWH3/4FF5/+FJdv/hRHT/4j9w/+E7\n        bf/MMVv/gh0s/1ooIv9pQDX/c0g9/3dMQf93TUH/d01B/3dNQf93TUH/d01B/3dNQf93TUH/d0xB/3NJ\n        Pf9iOi//YDwu/3xURv92TUD/dUw//39WSf+hgYD/vqrF/9jE5f/fy+3/4Mzu/+DM7v/gzO7/4Mzu/+DM\n        7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO7/4MzuZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAODM7mbgzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM\n        7v/gzO7/4Mzu/+DM7v/gzO7/4Mzu/+DM7v/gzO3/3Mnq/8y62f+0m6v/o4Bz/41mWP+LZFb/i2NV/4Zf\n        T/9fOiv/Zz8z/3VLP/94TUL/eE5C/3hNQv92TED/cUg8/2Y9Mf90Sj7/d0xB/3dNQf90ST7/aT80/2U1\n        LP+SU07/yoOJ/9eSmv/YlJv/15Wc/9eVnP/XlZz/2JSb/9iSmv/Yj5j/2IyX/9mHlf/agZH/2nqN/9xz\n        if/caoT/3mKB/99aff/gU3j/4Et0/+FGcv/gQW3/zzhe/40iMv9dJSH/Zz0y/3NJPf93TUH/eE5C/3hO\n        Qv94TkL/eE5C/3hOQv94TkL/eE5C/3hNQv93TEH/bkU5/1o0J/9zTD7/elJE/3dOQf94T0L/j2lb/6mP\n        mv/JuNX/3Mrq/+DN7v/hze//4c3v/+HN7//hze//4c3v/+HN7//hze7/4c3v/+HN7//hze//4c3u/+HO\n        7v/hzu//4c7v/+HO7//hzu//4c7v/+HO7//hzu9mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4c3vZuHN7v/hze7/4c3v/+HN\n        7//hze7/4c3u/+HN7//hze//4c3v/+HN7//hze7/4c3u/+HN7//hze//4c3u/+HN7v/hze7/4c3u/+HN\n        7v/fzO3/1cLi/7+rxf+qi4H/k25f/4xlVv+MZFb/i2RW/3BKO/9fOCv/ckg8/3hOQv95T0P/eU9D/3hN\n        Qv9wRjr/ZDsw/3ZMQP94TkL/eU9D/3lOQ/9zST7/aD4z/2U1K/+dXFn/z4iP/9eTm//YlJv/2JSa/9iU\n        m//Yk5v/2JGZ/9iOmP/ZipX/2YaS/9qAj//aeov/3HKH/91pgv/eYn//3lt7/99Ud//gTXP/4Ehw/9E+\n        YP+XKDn/XCEe/2U7MP9ySDz/eE5C/3lPQ/95T0P/eU9D/3lPQ/95T0P/eU9D/3hOQv94TkL/d01B/3RK\n        Pv9kPDD/XTcq/39XSf96UUT/eVBD/35WSf+YdWr/uKS7/9LB4P/fze3/4M7u/+HO7//hzu//4c7v/+HO\n        7//hzu//4c7v/+HO7//hzu//4c7v/+HO7//hzu//4c/v/+HP7//hz+//4c/v/+HP7//hz+//4c/v/+HP\n        72YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADhzu9m4c7v/+HO7//hzu//4c7v/+HO7//hzu//4c7v/+HO7//hzu//4c7v/+HO\n        7//hzu//4c7v/+HO7//hzu//4c7v/+HO7//hzu//4c7v/+DO7v/byun/zLvY/7OYnv+gfXD/jWdY/41m\n        V/+MZVb/g11N/2I9Lf9qQjX/d0xB/3tQRf96UET/eE5C/25FOf9kPDD/d01B/3pPRP97UEX/e1BF/3lP\n        Q/9zST3/Zz4y/2k4L/+dXln/z4qQ/9eSmf/Ykpj/2JKY/9iQmP/Yjpf/2IyW/9mIkv/ag4//2n2M/9t3\n        if/ccIX/3WiA/95hfP/eW3j/3lR0/9tNb//KQ17/jCoz/1siHv9kOi7/cUc8/3dNQf95T0P/eU9D/3hO\n        Qv95T0P/ek9E/3tRRf98U0f/f1ZK/4FZTP+EW07/gFhL/2Q+L/9zTT3/flVI/3tSRf97UUX/jGZZ/6aJ\n        iv/IudT/2cnn/+DP7v/hz+//4dDv/+HQ7//hz+//4dDv/+HQ7//hz+//4dDv/+HQ7//h0O//4dDv/+HQ\n        7//h0O//4dDv/+HQ7//h0O//4c/v/+HP7//hz+//4c/vZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOHP72bhz+//4c/v/+HP\n        7//hz+//4c/v/+HP7//hz+//4c/v/+HP7//hz+//4c/v/+HP7//hz+//4c/v/+HP7//hz+//4c/v/+HP\n        7//hz+//4c/v/97N7P/VxOL/u6e5/62Phv+RbF3/jWdY/41nWP+LZVX/c009/2I7LP9xSDz/e1BF/3tR\n        Rf95T0P/bUM4/2Y+Mv94TkL/e1FF/3xRRv98UUb/e1FF/3pPRP9zST3/ZTsw/2c4LP+oa2b/zYmM/9aP\n        lf/YjpX/2I6W/9iMlf/ZiZL/2YWR/9qBjf/ae4n/23WF/9xugv/daH7/3WF5/9tadP/UUmr/u0RX/4ov\n        NP9UHhn/XjUr/3BHO/95T0P/flRI/4JZTP+GXVH/imJV/4xlV/+NZlj/jGVX/4hhUv9+V0n/cU0+/2VB\n        NP9XNSj/Wzgp/31WR/98U0b/fFNG/35VSP+denD/s52s/9PC3//ezez/4tDv/+LQ8P/i0O//4tDv/+LQ\n        8P/i0PD/4tDv/+LQ7//i0O//4tDw/+LQ7//i0PD/4tDw/+LQ7//i0O//4tDv/+LQ7//i0O//4tDv/+LQ\n        7//i0PBmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA4dDvZuHQ7//h0O//4dDv/+LQ8P/i0PD/4tDv/+LQ7//i0O//4tDv/+LQ\n        7//i0O//4tDv/+LQ7//i0O//4tDv/+LQ7//i0O//4tDv/+LQ7//i0PD/4dDv/93M6v/KudT/tp2i/6F/\n        cf+Palr/jmhZ/45oWf+JY1P/Z0Ex/2Y/Mf94TUL/e1FF/3pQRP9rQjb/akI2/3pQRP98Ukb/fVNH/31T\n        R/99U0f/fVJH/3pRRP9zSj3/Zz0x/2Y4LP+MVkz/q21n/7h1cv/AeHr/w3d5/8Z2ev/Ic3n/yXB4/8do\n        cv/GYm7/xVxq/75VYP+1TFf/p0NL/402Ov9eIB7/SB0V/2pDNf9/WUn/gFtM/31ZSv97V0j/elRF/3ZQ\n        QP9tRTf/Yzwu/143K/9fOCz/Zj0y/2xDN/9uRTn/ZTww/1UwJP94UkL/f1dJ/39WSP9+VUj/j2la/6qO\n        kP/Gtc//28vp/+HQ7//i0fD/4tHw/+LR8P/i0fD/4tHw/+LR8P/i0fD/4tHw/+LR8P/i0fD/4tHw/+LR\n        8P/i0fD/4tHw/+LR8P/i0fD/4tHw/+LR8P/i0fD/4tHw/+LR8GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADi0PBm4tDv/+LR\n        7//i0PD/4tHw/+LQ8P/i0O//4tHv/+LR7//i0O//4tDw/+LQ7//i0e//4tHw/+LQ7//i0O//4tDv/+LQ\n        7//i0O//4tHv/+LR8P/h0e//4M/u/9TE4f/ArcH/ro+H/5dyY/+PaVr/j2la/45oWf97VUT/Yz4u/29G\n        Of95T0P/elBE/2g/M/9uRTn/e1FF/35TSP9+U0j/flNI/35TSP9+U0j/fVNH/3tRRf90ST7/ZTsw/1wy\n        J/9jNSr/ajkv/3E8M/90PDP/dzw1/3o8Nv97Ojb/dzYx/3UzLv9zMS3/ay0o/2MoI/9bJx//UyQc/0oi\n        Gv9QKh//ZD0w/2lBNP9pQTX/akE1/2xDN/9vRjr/ckg8/3VLP/92TUD/eE5C/3lPQ/96T0T/eU9D/3JJ\n        Pf9eNyr/a0U2/4BZSv9/V0n/f1dJ/4RdT/+ffHH/uaS1/9HD3//f0O3/4dLv/+LS8P/i0vD/4tLw/+LS\n        8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS\n        8P/i0vD/4tLwZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLS8Gbi0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS\n        8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/h0u//3M3q/86/\n        2v+4oan/p4d6/5JsXv+Ra1z/kGpb/4xmV/91Tz//ZD4u/3FHO/93TkH/Yjou/3FIPP99Ukf/f1VJ/39V\n        Sf9/VUn/f1VJ/39VSf9/VUn/flVJ/3xSRv93TUH/bUU4/2pBNP9tQzf/aD4z/2c9Mv9mPTL/Zj0y/2c9\n        M/9oPTL/aD4z/2hANP9qQTX/bEI2/21EOP9vRTn/ckg9/3ZLQP95T0P/elBE/3tRRf98UUb/fFJG/31S\n        R/99Ukf/fVNH/31UR/99VEj/flRI/35TSP94TkL/ZT4x/2ZAMv9+V0j/gVlM/4FZTP+BWkz/l3Jl/7CV\n        mP/Lvdb/283o/+LT8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT\n        8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT8P/i0/BmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4tLwZuLS\n        8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0vD/4tLw/+LS8P/i0/D/4tPw/+LT\n        8P/i0/D/4tPw/+LT8P/i0/D/4tPw/+LT8P/g0e7/2Mrm/8W0yv+0mZb/n3xt/5JsXf+Ra13/kWpc/4pk\n        VP9sRzb/Zj8x/29GOv9ZMyf/c0k9/35TSP9/Vkr/f1ZK/39WSv9/Vkr/f1ZK/39WSv9/Vkr/f1ZK/35U\n        SP98Ukb/dUxA/3xTRv99VEj/eU9D/3lOQ/95T0T/eU9E/3pQRP96UEX/elFF/3pRRf97UUX/fFJG/31S\n        R/99U0j/flRI/35VSf9+VUn/f1VJ/39WSv9/Vkr/f1ZK/39WSv9/Vkr/f1ZK/39WSv9/Vkn/e1FG/2pB\n        Nf9iPC3/fFVG/4JbTf+CWk3/glpN/41nWf+pioT/wK/C/9fJ5P/g0u7/49Tx/+PU8f/j1PD/49Tw/+PU\n        8P/j1PD/49Tw/+PU8P/j1PH/49Tx/+PU8f/j1PD/49Tw/+PU8f/j1PH/49Tx/+PU8f/j1PD/49Tw/+PU\n        8P/j1PD/49Tx/+PU8WYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj1PBm49Tw/+PU8P/j1PD/49Tw/+PU8P/j1PD/49Tw/+PU\n        8P/j1PD/49Tw/+PU8P/j1PD/49Tw/+PU8P/j1PD/49Tw/+PU8f/j1PD/49Tw/+PU8f/j1PD/49Tw/+LU\n        8P/g0e3/08bg/8CtvP+xk4n/mHRl/5JsXf+SbF3/kWtc/4VfT/9qRTT/Yjwt/00rH/90Sj7/f1RJ/4FX\n        TP+BV0z/gVdM/4FXTP+BV0z/gVdM/4FXTP+BV0z/gFdL/4BWS/9+VUn/eU9D/4FZS/+DWk7/f1ZK/39X\n        Sv+AV0v/gVdM/4FXTP+BV0z/gVdM/4FXTP+BV0z/gVdM/4FXTP+BV0z/gVdM/4FXTP+BV0z/gVdM/4FX\n        TP+BV0z/gVdM/4FXTP+BV0z/gFdL/3xTR/9sQzf/Yjst/3dRQf+EXU7/hF1O/4RcT/+IYVP/ooJ1/7mk\n        sP/Rxd7/3tHs/+LU8P/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV\n        8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49XxZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPV\n        8Gbj1fD/49Xw/+PV8P/j1fD/49Xw/+PV8P/j1fD/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV\n        8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+PV8f/j1fH/49Xx/+LU8P/d0Ov/z8La/72nr/+sjoD/l3Jj/5Nu\n        Xv+TbV7/kWxc/4ReTv9oQjL/RiUa/21EOf9+VEn/gVdM/4JYTf+CWE3/glhN/4JYTf+CWE3/glhN/4JY\n        Tf+CWE3/gVhM/4BXS/9+VUn/dk1B/4FZS/+FXVD/gFdL/4FXTP+CWE3/glhN/4JYTf+CWE3/glhN/4JY\n        Tf+CWE3/glhN/4JYTf+CWE3/glhN/4JYTf+CWE3/glhN/4JYTf+CWE3/glhN/4FXTP98Ukb/bEQ3/2E7\n        LP92UED/hF1O/4ZeUP+GXlD/iGFS/558bv+1naH/zL/W/9zP6f/i1e//4tbw/+PW8f/j1vH/49bx/+PW\n        8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW\n        8f/j1vH/49bx/+PW8f/j1vFmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA49bxZuPW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW\n        8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW8f/j1vH/49bx/+PW\n        8f/j1vH/4tbw/+HV7//azuj/y73U/7qiov+oiHn/lXBg/5RuX/+Ubl//kmxd/4JdTf9bNyn/WjQo/3VL\n        QP+AVkv/g1lO/4NZTv+DWU7/g1lO/4NZTv+DWU7/g1lO/4NZTv+CWU3/glhN/4FXTP9+VUn/dUs//4Jb\n        Tf+GXVH/gVdM/4JZTf+DWU7/g1lO/4NZTv+DWU7/g1lO/4NZTv+DWU7/g1lO/4NZTv+DWU7/g1lO/4NZ\n        Tv+DWU7/g1lO/4NZTv+BWEz/fFNG/2pCNf9iPC3/dlA//4VeT/+HYFL/h2BR/4dgUv+admj/sZaT/8e5\n        zv/azeb/4dTv/+PW8f/j1/H/49fx/+PX8f/j1/H/49bx/+PW8f/j1/H/49fx/+PW8f/j1/H/49fx/+PW\n        8f/j1vH/49bx/+PX8f/j1vH/49bx/+PW8f/j1vH/49bx/+PX8f/j1/H/49bx/+PX8WYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADj1vFm49bx/+PW8f/j1vH/49bx/+PW8f/j1/H/49bx/+PX8f/j1/H/49bx/+PW8f/j1vH/49fx/+PX\n        8f/j1vH/49fx/+PW8f/j1vH/49bx/+PW8f/j1/H/49fx/+PW8f/j1vH/49bw/+HU7//azuf/ybrP/7yj\n        o/+mhXb/lnFi/5RvX/+Ub1//k21e/4diUf9sRzb/Xzks/29GOv9/Vkr/g1lO/4NZT/+EWk//hFpP/4Ra\n        T/+EWk//hFpP/4RaT/+EWk//g1lO/4JYTf9+VUn/cEg6/4BZS/+IYFP/glhN/4JZTf+EWk//hFpP/4Ra\n        T/+EWk//hFpP/4RaT/+EWk//hFpP/4RaT/+EWk//hFpP/4RaT/+DWU7/gVdM/3ZNQP9mPjH/ZD8v/3tU\n        RP+IYFL/iWJT/4lhU/+JYlT/mHNl/7OXlP/Gtsj/2czl/+HU7v/j1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX\n        8f/k1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX8f/k1/L/5Nfx/+TX8v/k1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX\n        8f/k1/H/5Nfx/+TX8f/k1/H/5NfxZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTX8Wbk1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX\n        8f/k1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX8f/k1/H/5Nfx/+TX8f/k1/L/5Nfx/+TX8f/k1/H/5Nfx/+TX\n        8f/k1/H/5Nfx/+TX8f/k1/H/49fx/+HU7v/XzOT/yLrM/7mfmf+mhXb/lXFh/5VvYP+Vb2D/k25e/4tl\n        Vf9xSzr/Xzkr/2pCNf96UUX/gllN/4RaT/+FW1D/hVtQ/4VbUP+FW1D/hVtQ/4VbUP+EWk//hFpP/4JZ\n        Tf9+VUn/b0c6/4BYS/+IYFT/gllN/4RZT/+EWk//hVtQ/4VbUP+FW1D/hVtQ/4VbUP+FW1D/hVtQ/4Vb\n        UP+EWk//g1lO/35VSf9ySTz/Yjsu/2dBMv99V0f/iWJU/4tjVv+KY1T/imRV/5h0Zv+vkYn/xLTD/9XL\n        4v/g1e7/49jx/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY\n        8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PJmAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA5NjyZuTY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY\n        8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/5Njy/+TY8v/k2PL/49jx/+HW\n        7v/Zzub/yLrL/72lov+oh3n/mHRk/5VxYf+VcGH/lXBg/5BrXP+AWUr/ZT8w/185LP9uRTn/fFNH/4Na\n        Tv+FW1D/hVxQ/4VcUP+FXFD/hVxQ/4VcUP+FXFD/hFtP/4NZTv9+VUn/a0Q3/31XSf+KY1X/gllN/4Ra\n        T/+FXFD/hVxQ/4VcUP+FXFD/hVxQ/4VcUP+EW0//hFpP/39WSv91TD//Zj4x/2I8Lf90Tz3/hV9P/4xl\n        V/+MZVb/jGVW/41nWP+ceGn/tJqT/8S0w//YzuX/4Nbu/+TZ8f/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ\n        8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa\n        8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk2fJm5Nny/+TZ8v/k2fL/5Nny/+TZ\n        8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ\n        8v/k2fL/5Nny/+TZ8v/k2fL/5Nny/+TZ8v/k2fL/5Nnx/+HW7v/YzeT/y73O/72kof+sjX//mXZm/5Zx\n        Yv+VcWH/lXFh/5NvX/+IYlL/dE4+/2E8Lf9iOy7/cEc7/31TR/+DWU7/hVxQ/4ZcUf+GXVH/hl1R/4Zd\n        Uf+GXFH/hVxQ/4NaTv9/Vkr/akM2/3lURf+LY1b/g1pP/4RbT/+GXFH/hl1R/4ZcUf+FXFD/g1pO/39V\n        Sv91TED/aEEz/2I8Lv9sRTb/fVdG/4plVf+NZ1j/jWdY/41nWP+Palr/oYBx/7SalP/Iucj/183j/+HX\n        7//k2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa\n        8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dryZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAOXa8mbl2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa\n        8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa8v/l2vL/5dry/+Xa\n        8v/l2vL/5Nry/+LX7//c0ej/zcLU/8Gsrv+ylYj/nnxs/5dyY/+WcmL/lnJi/5ZxYv+Tbl7/hmBP/3JN\n        PP9gOyz/YDks/2hANP92TUH/flVJ/4NaTv+FXFD/hl1R/4deUv+HXVL/hl1R/4RaT/9/VUn/aUE1/3VQ\n        Qf+MZVf/g1pO/4RaT/+DWk7/f1ZK/3lPRP9uRjj/ZT0w/2I8LP9rRTb/e1VF/4pkVP+OaFn/j2la/45o\n        Wf+OaFn/lHBh/6iIev+7pKP/yr3O/9rR5//h2O//5Nvy/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb\n        8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xc8//l3PP/5dzz/+Xc\n        8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PNmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5dvzZuXb8//l2/P/5dvz/+Xb\n        8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb\n        8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5dvz/+Xb8//l2/P/5Nvy/+LZ8P/d1Or/0sjb/8Wz\n        uf+5npX/p4Z4/5l2Zv+XcmP/l3Jj/5ZyYv+WcWL/km1d/4hjUv93UkH/aUQ0/2A6LP9gOSz/Z0Ay/25F\n        Of91TED/elFF/31USP9/VUr/flVJ/3xTR/93TUH/XTcr/2hEN/9/WEn/cEg7/2pDNf9kPS//Yjwt/2hC\n        Mv9xSzv/gFpK/4pkVf+PaVr/kGpc/5FqXP+Qalv/kmxd/557bP+xlYr/wKyw/8/F2P/b0+n/4tnw/+Tc\n        8v/l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc\n        8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3fP/5d3z/+Xd\n        82YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADl3PNm5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc\n        8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc8//l3PP/5dzz/+Xc\n        8//l3PP/5dzz/+Xc8//l3PP/5Nzy/+Pb8f/f1+3/1s3i/8m8yP/AqaX/sJOF/6B+bv+XdGT/l3Jj/5dy\n        Y/+XcmP/lnJi/5VwYP+Pa1r/hF5O/3hSQv9sRjX/Yjwt/104Kf9gOiv/XTgq/144K/9eNyv/XTcq/1w2\n        Kf9XMSX/SScb/145Kf9kPy7/akQz/3RPPv99WEf/iWNT/49qWv+SbF3/kmxd/5JsXf+Sa13/kmtd/5h0\n        ZP+piXr/uqCb/8e3wv/VzeD/39fs/+Tc8f/l3fL/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd\n        8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd\n        8//l3fP/5d3z/+Xd8//l3fP/5d3z/+be8//m3vP/5t7zZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXd82bl3fP/5d3z/+Xd\n        8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd\n        8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3z/+Xd8//l3fP/5d3y/+Xd\n        8v/i2+//3NTp/9PK2//Htr3/vqeg/62Ogf+gfm//mXVm/5hzZP+Xc2P/l3Nj/5dzY/+WcmL/lXFh/5Nu\n        Xv+OaVr/iWNT/4NeTf9/WUj/e1RF/3hSQv93UUH/eVND/3xXRf+AWkn/hWBP/4tlVf+PaVr/km1d/5Ru\n        X/+Ubl//lG5f/5RuX/+Tbl7/lG5f/5p2Zv+mhnj/uaCX/8Owtf/Rx9j/29To/+La7//l3fL/5d3z/+be\n        8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be\n        8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be\n        8//m3vNmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA5t7zZube8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be\n        8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+be\n        8//m3vP/5t7z/+be8//m3vP/5t7z/+be8//m3vP/5t7z/+Xd8//k3PH/4Nnu/9nR5P/QxNT/xbK1/7ui\n        mf+ukIH/oX9v/5l2Zv+YdGT/mHNk/5dzY/+Xc2P/l3Nj/5dyY/+XcmP/lnJi/5ZxYv+WcGH/lXBh/5Vw\n        Yf+VcGH/lXBh/5VwYf+VcGH/lXBh/5VwYP+Vb2D/lW9g/5VvYP+Vb2D/lW9g/5t3aP+piHr/tpuQ/8Gt\n        rf/NwdD/18/j/9/Y7f/j3PH/5d3z/+Xd8//m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be\n        9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be\n        9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm3vRm5t70/+be\n        9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be\n        9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be9P/m3vT/5t70/+be\n        9P/m3vT/5t70/+be9P/l3vP/5N3y/+Da7v/a0+f/0cjY/8i4v//CrKn/t5yR/6uMfv+igXH/m3hp/5l1\n        Zf+YdGT/mHRk/5hzZP+Xc2P/l3Nj/5dzY/+XcmP/l3Jj/5dyY/+XcmP/lnJi/5ZyYv+WcmL/lnFi/5Zy\n        Yv+YdGX/nnts/6eGeP+zlor/v6ei/8W0uf/QxtX/2dPm/+DZ7f/j3fH/5d/z/+bf9P/m3/T/5t/0/+bf\n        9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf\n        9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bg\n        9P/m4PT/5uD0ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAObf9Gbm3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf\n        9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf\n        9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/m3/T/5t/0/+bf9P/l3/P/5d/z/+Pd\n        8f/g2u7/29Pn/9TL2//Mv8r/xrO1/7+noP+4nZL/sJOE/6iHeP+igXD/nnxs/5x5af+ad2j/mXVm/5h1\n        Zf+YdGT/mHVl/5l1Zf+ad2f/nXlq/6B9bv+lhHX/rY+B/7WZjf+8o5z/w6+w/8u9xf/Tydn/2tPm/9/a\n        7f/j3fH/5d/z/+bg8//m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg\n        9P/m4PT/5uD0/+bg9P/m4PT/5+D0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg\n        9P/n4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PRmAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5uD0Zubg\n        9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg\n        9P/m4PT/5+D0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg\n        9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+bg8//l3/L/493w/+DZ7f/b1ej/1c7e/9DE\n        0f/KvMP/x7W3/8Wwrv/AqaL/vKKY/7idkv+2m4//tZmN/7WajP+2mo7/t52Q/7qhlv+/p5//w6+r/8a0\n        tf/JusD/z8PQ/9XN3v/b1ef/39rt/+Pd8P/l3/L/5uDz/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh\n        9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh\n        9P/n4fT/5+H0/+fh9P/n4fT/5+H1/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh\n        9P/n4fT/5+H0/+fh9GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn4PRm5uD0/+bg9P/m4PT/5uD0/+bg9P/m4PT/5uD0/+fh\n        9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh\n        9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh\n        9P/n4fT/5+H0/+fh9P/m4fT/5uH0/+Xg8//k3/H/4dzv/97Z6//b1eb/2NLi/9XO3f/Sytf/0MbR/8/E\n        z//PxM7/z8TO/8/Ez//PxdD/0cnW/9TN3P/Y0eL/2tTl/93Y6v/h3O7/497x/+Xf8v/m4fT/5uH0/+fh\n        9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+H0/+fh9P/n4fT/5+L1/+fi\n        9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi\n        9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1ZgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfi\n        9Wbn4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi\n        9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi\n        9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi\n        9f/m4vT/5uL0/+Xh8//l4PP/5ODy/+Pf8f/i3vD/4t3v/+Ld7//i3e//4t3v/+Le8P/j3vD/5ODy/+Xg\n        8//l4fP/5uL0/+bi9P/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/VmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5+L1Zufi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi\n        9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fi9f/n4vX/5+L1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/T/5+P0/+fj\n        9P/n4/T/5+P0/+fj9P/n4/T/5+P0/+fj9P/n4/T/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fk9f/n5PX/5+T1/+fj9f/n5PX/6OT1/+jk9WYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AADn4/Vm5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj\n        9f/n4/X/5+P1/+fj9f/n4/X/5+P1/+fj9f/n4/X/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjk9Wbo5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk\n        9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5PX/6OT1/+jk9f/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5fb/6OX2/+jl9v/o5Pb/6OT2/+jk9v/o5fb/6OT2/+jk9v/o5PZmAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA6OT2Zujk9v/o5fb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5fb/6OX2/+jl9v/o5Pb/6OT2/+jk\n        9v/o5Pb/6OT2/+jk9v/o5fb/6OT2/+jk9v/o5Pb/6OT2/+jk9v/o5fb/6OX2/+jk9v/o5fb/6OX2/+jk\n        9v/o5Pb/6OX2/+jk9v/o5Pb/6OT2/+jk9v/o5Pb/6OT2/+jl9v/o5Pb/6OT2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo5fZm6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl\n        9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5fb/6OX2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2ZgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAOjl9mbo5fb/6OX2/+jl9v/o5fb/6OX2/+jl9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6Ob2/+jm9v/p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/dmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6Ob2Zujm9v/o5vb/6Ob2/+jm\n        9v/o5vb/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        92YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAADp5/cQ6ef3y+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn\n        9//p5/f/6ef3/+nn9//p5/f/6ef3/+nn9//p5/f/6ef3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6PfL6ej3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp5/dm6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6ej3/+no\n        9//p6Pf/6ej3/+no9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        92YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOno9xbp6Pfb6ej3/+no9//p6Pf/6ej3/+no9//p6Pf/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vfb6ur3FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp\n        9yzp6ffl6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//p6ff/6en3/+np9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6uv45err\n        +CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrq9zLq6vf/6ur3/+rq9//q6vf/6ur3/+rq\n        9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6ur3/+rq9//q6vf/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/gyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAA6uv4Dunq96Pq6vf96uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/f96er3o+rr\n        +A4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnq94Pq6/fX6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz31+nr94MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrr+CDq6/jl6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr\n        +P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rr+P/q6/j/6uv4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+OXq7PggAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrs\n        +Czp7PiF6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs\n        +P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/q7Pj/6uz4/+rs+P/r7fn/6+35/+vt\n        +f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt\n        +f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt+f/r7fn/6+35/+vt\n        +f/r7fn/6+35/+vt+f/r7fiF6+35LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrs+ALq7Pge6uz4oers+MPq7PjD6uz4w+rs\n        +MPq7PjD6uz4w+rs+MPq7PjD6uz4w+rs+MPq7PjD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt\n        +cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt\n        +cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt\n        +cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt\n        +cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt\n        +cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fnD6+35w+vt+cPr7fmh6+35Huvt+QIAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////////////////\n        ////////////////////////////////////////////////////////////////////////////////\n        ///////////////////////////////////////////////////////////gAAAAAAAAAAAAAAf/////\n        gAAAAAAAAAAAAAAB/////wAAAAAAAAAAAAAAAP////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA\n        H///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAA\n        AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///A\n        AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA\n        A///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA\n        AAAAAAP//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf///AAAAAA\n        AAAAAAAAAAAP///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////wAAAAAAAAAAAAAAAA/////\n        AAAAAAAAAAAAAAAA/////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////////////////////\n        ////////////////////////////////////////////////////////////////////////////////\n        ////////////////////////////////////////////////////////////////////////////////\n        //////////////////////////////////8=\n</value>\n  </data>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GammaForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class GammaForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 13;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 59;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 1;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(47, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"Gamma：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"1\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // GammaForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"GammaForm\";\n            this.Text = \"Gamma调节\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GammaForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class GammaForm : CCWin.Skin_Mac\n    {\n        public GammaForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.GammaCorrectProcess(curBitmap, gamma);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int gamma = 1;\n        public int getGamma\n        {\n            get { return gamma; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            gamma = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                gamma = skinHScrollBar1.Value;\n                textBox1.Text = gamma.ToString();\n                pictureBox1.Image = (Image)zPhoto.GammaCorrectProcess(curBitmap, gamma);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GammaForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GaussBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class GaussBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 13;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 509;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 150;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"15\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // GaussBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"GaussBlurForm\";\n            this.Text = \"高斯模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GaussBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class GaussBlurForm : CCWin.Skin_Mac\n    {\n        public GaussBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 300 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 300 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.GaussFilterProcess(curBitmap, (float)radius);\n            }\n        }\n        private Bitmap curBitmap = null;\n        private double radius = 15.0;\n        private ZPhotoEngineDll zPhoto = null;\n        public double getRadius\n        {\n            get { return radius; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = (double)skinHScrollBar1.Value / 10.0;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.GaussFilterProcess(curBitmap, (float)radius);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = (double)skinHScrollBar1.Value / 10.0;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/GaussBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HSLForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class HSLForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.hScrollBar1 = new System.Windows.Forms.HScrollBar();\n            this.hScrollBar2 = new System.Windows.Forms.HScrollBar();\n            this.label1 = new System.Windows.Forms.Label();\n            this.label2 = new System.Windows.Forms.Label();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.hScrollBar3 = new System.Windows.Forms.HScrollBar();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.label3 = new System.Windows.Forms.Label();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(209, 43);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(190, 190);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 5;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.hScrollBar3);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Controls.Add(this.hScrollBar1);\n            this.groupBox1.Controls.Add(this.hScrollBar2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Location = new System.Drawing.Point(9, 36);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 199);\n            this.groupBox1.TabIndex = 4;\n            this.groupBox1.TabStop = false;\n            // \n            // hScrollBar1\n            // \n            this.hScrollBar1.Location = new System.Drawing.Point(11, 40);\n            this.hScrollBar1.Maximum = 189;\n            this.hScrollBar1.Minimum = -180;\n            this.hScrollBar1.Name = \"hScrollBar1\";\n            this.hScrollBar1.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar1.TabIndex = 4;\n            this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar1_Scroll);\n            // \n            // hScrollBar2\n            // \n            this.hScrollBar2.Location = new System.Drawing.Point(11, 93);\n            this.hScrollBar2.Maximum = 109;\n            this.hScrollBar2.Minimum = -100;\n            this.hScrollBar2.Name = \"hScrollBar2\";\n            this.hScrollBar2.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar2.TabIndex = 5;\n            this.hScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar2_Scroll);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(15, 17);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 4;\n            this.label1.Text = \"色相(H)：\";\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(15, 68);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(71, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"饱和度(A)：\";\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(53, 170);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(75, 65);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(65, 21);\n            this.textBox2.TabIndex = 7;\n            this.textBox2.Text = \"0\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(75, 14);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(65, 21);\n            this.textBox1.TabIndex = 6;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // hScrollBar3\n            // \n            this.hScrollBar3.Location = new System.Drawing.Point(11, 145);\n            this.hScrollBar3.Maximum = 109;\n            this.hScrollBar3.Minimum = -100;\n            this.hScrollBar3.Name = \"hScrollBar3\";\n            this.hScrollBar3.Size = new System.Drawing.Size(164, 17);\n            this.hScrollBar3.TabIndex = 9;\n            this.hScrollBar3.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hScrollBar3_Scroll);\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(75, 117);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(65, 21);\n            this.textBox3.TabIndex = 10;\n            this.textBox3.Text = \"0\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(15, 120);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(59, 12);\n            this.label3.TabIndex = 8;\n            this.label3.Text = \"明度(I)：\";\n            // \n            // HSLForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(410, 243);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(410, 243);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(410, 243);\n            this.Name = \"HSLForm\";\n            this.Text = \"色相/饱和度\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private System.Windows.Forms.HScrollBar hScrollBar1;\n        private System.Windows.Forms.HScrollBar hScrollBar2;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.Label label2;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.HScrollBar hScrollBar3;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HSLForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class HSLForm : CCWin.Skin_Mac\n    {\n        public HSLForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n            \n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int hue = 0;\n        private int satruation = 0;\n        private int lightness = 0;\n        private Bitmap tmp = null;\n        public int getHue\n        {\n            get { return hue; }\n        }\n        public int getSaturation\n        {\n            get { return satruation; }\n        }\n        public int getLightness\n        {\n            get { return lightness; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            hue = hScrollBar1.Value;\n            satruation = hScrollBar2.Value;\n            lightness = hScrollBar3.Value; \n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n        //hue\n        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox1.Text = hScrollBar1.Value.ToString();\n                hue = hScrollBar1.Value;\n                satruation = hScrollBar2.Value;\n                lightness = hScrollBar3.Value;\n                tmp = zPhoto.HueSaturationAdjust(curBitmap, hue, satruation);\n                pictureBox1.Image = (Image)zPhoto.LightnessAdjustProcess(tmp, lightness);\n            }\n        }\n        //saturation\n        private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox2.Text = hScrollBar2.Value.ToString();\n                hue = hScrollBar1.Value;\n                satruation = hScrollBar2.Value;\n                lightness = hScrollBar3.Value;\n                tmp = zPhoto.HueSaturationAdjust(curBitmap, hue, satruation);\n                pictureBox1.Image = (Image)zPhoto.LightnessAdjustProcess(tmp, lightness);\n            }\n        }\n        //lightness\n        private void hScrollBar3_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox3.Text = hScrollBar3.Value.ToString();\n                hue = hScrollBar1.Value;\n                satruation = hScrollBar2.Value;\n                lightness = hScrollBar3.Value;\n                tmp = zPhoto.HueSaturationAdjust(curBitmap, hue, satruation);\n                pictureBox1.Image = (Image)zPhoto.LightnessAdjustProcess(tmp, lightness);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HSLForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighlightShadowForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class HighlightShadowForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 7;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 6;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 109;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"高光(U)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"0\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"阴影(A)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // HighlightShadowForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"HighlightShadowForm\";\n            this.Text = \"阴影/高光调节\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighlightShadowForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class HighlightShadowForm : CCWin.Skin_Mac\n    {\n        public HighlightShadowForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int shadow = 0;\n        private int highlight = 0;\n        public int getShadow\n        {\n            get { return shadow; }\n        }\n        public int getHighlight\n        {\n            get { return highlight; }\n        }\n        private Bitmap tmp = null;\n        //阴影\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                shadow = skinHScrollBar1.Value;\n                highlight = skinHScrollBar2.Value;\n                textBox1.Text = shadow.ToString();\n                textBox2.Text = highlight.ToString();\n                tmp = zPhoto.ShadowAdjust(curBitmap, shadow, 100);\n                pictureBox1.Image = (Image)zPhoto.HighlightAdjust(tmp, highlight, 100);\n            }\n        }\n        //高光\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                shadow = skinHScrollBar1.Value;\n                highlight = skinHScrollBar2.Value;\n                textBox1.Text = shadow.ToString();\n                textBox2.Text = highlight.ToString();\n                pictureBox1.Image = (Image)zPhoto.HighlightShadowPreciseAdjustProcess(curBitmap, highlight, shadow);\n                //tmp = zPhoto.ShadowAdjust(curBitmap, shadow, 100);\n                //pictureBox1.Image = (Image)zPhoto.HighlightAdjust(tmp, highlight, 100);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            shadow = skinHScrollBar1.Value;\n            highlight = skinHScrollBar2.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighlightShadowForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighpassForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class HighpassForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 9;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 8;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 509;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 15;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"1.5\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // HighpassForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"HighpassForm\";\n            this.Text = \"高反差保留\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighpassForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class HighpassForm : CCWin.Skin_Mac\n    {\n        public HighpassForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 300 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 300 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.HighPassProcess(curBitmap, (float)radius);\n            }\n        }\n        private Bitmap curBitmap = null;\n        private double radius = 1.5;\n        private ZPhotoEngineDll zPhoto = null;\n        public double getRadius\n        {\n            get { return radius; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = (double)skinHScrollBar1.Value / 10.0;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.HighPassProcess(curBitmap, (float)radius);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = (double)skinHScrollBar1.Value / 10.0;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HighpassForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HistagramForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class HistagramForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.comboBox1 = new System.Windows.Forms.ComboBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(19, 86);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(256, 150);\n            this.pictureBox1.TabIndex = 7;\n            this.pictureBox1.TabStop = false;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(47, 50);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(53, 12);\n            this.label1.TabIndex = 6;\n            this.label1.Text = \"通道(C):\";\n            // \n            // comboBox1\n            // \n            this.comboBox1.FormattingEnabled = true;\n            this.comboBox1.Items.AddRange(new object[] {\n            \"RGB\",\n            \"红\",\n            \"绿\",\n            \"蓝\"});\n            this.comboBox1.Location = new System.Drawing.Point(115, 47);\n            this.comboBox1.Name = \"comboBox1\";\n            this.comboBox1.Size = new System.Drawing.Size(121, 20);\n            this.comboBox1.TabIndex = 5;\n            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);\n            // \n            // HistagramForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(295, 250);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.label1);\n            this.Controls.Add(this.comboBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(295, 250);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(295, 250);\n            this.Name = \"HistagramForm\";\n            this.Text = \"直方图\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.ComboBox comboBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HistagramForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing System.Drawing.Imaging;\n\nnamespace TestDemo\n{\n    unsafe public partial class HistagramForm : CCWin.Skin_Mac\n    {\n        public HistagramForm(string path)\n        {\n            InitializeComponent();\n            comboBox1.SelectedIndex = 0;\n            this.DoubleBuffered = true;\n            curBitmap = new Bitmap(path);\n            DrawHistogram(curBitmap, 0);\n        }\n        private Bitmap curBitmap = null;\n        private void DrawHistogram(Bitmap tmp, int channel)\n        {\n            if (tmp != null)\n            {\n                int w = tmp.Width;\n                int h = tmp.Height;\n                int[] gray = new int[256];\n                int[] r = new int[256];\n                int[] g = new int[256];\n                int[] b = new int[256];\n                BitmapData srcData = tmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n                byte* p = (byte*)srcData.Scan0;\n                int offset = srcData.Stride - w * 4;\n                for (int j = 0; j < h; j++)\n                {\n                    for (int i = 0; i < w; i++)\n                    {\n                        gray[(int)((p[0] + p[1] + p[2]) / 3)]++;\n                        b[p[0]]++;\n                        g[p[1]]++;\n                        r[p[2]]++;\n                        p += 4;\n                    }\n                    p += offset;\n                }\n                tmp.UnlockBits(srcData);\n                Bitmap grayHisBmp = new Bitmap(System.Windows.Forms.Application.StartupPath + \"\\\\hisBmp.jpg\");\n                Graphics grayGra = Graphics.FromImage(grayHisBmp);\n                Point start;\n                Point end;\n                Pen p0 = new Pen(Color.Black, 1);\n                Pen p1 = new Pen(Color.Red, 1);\n                Pen p2 = new Pen(Color.Green, 1);\n                Pen p3 = new Pen(Color.Blue, 1);\n                int grayMax = gray.Max();\n                int rMax = r.Max();\n                int gMax = g.Max();\n                int bMax = b.Max();\n                switch (channel)\n                {\n                    case 0:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - gray[i] * 150 / (grayMax));\n                            grayGra.DrawLine(p0, start, end);\n                        }\n                        break;\n                    case 1:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - r[i] * 150 / (rMax));\n                            grayGra.DrawLine(p1, start, end);\n                        }\n                        break;\n                    case 2:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - g[i] * 150 / (gMax));\n                            grayGra.DrawLine(p2, start, end);\n                        }\n                        break;\n                    case 3:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - b[i] * 150 / (bMax));\n                            grayGra.DrawLine(p3, start, end);\n                        }\n                        break;\n                }\n                grayGra.Dispose();\n                pictureBox1.Image = (Image)grayHisBmp;\n            }\n        }\n\n        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)\n        {\n            DrawHistogram(curBitmap, comboBox1.SelectedIndex);\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/HistagramForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ImageProcessId.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TestDemo\n{\n    class ImageProcessId\n    {\n        public const int ID_NONE = 0;\n        public const int ID_ROTATE = 1;                      //旋转\n        public const int ID_ZOOM = 2;                        //缩放\n        public const int ID_HMIRROR = 3;                     //水平翻转\n        public const int ID_VMIRROR = 4;                     //垂直翻转\n        public const int ID_AUTO_COLORGRADATION = 5;         //自动色调\n        public const int ID_AUTO_CONTRAST = 6;               //自动对比度\n        public const int ID_HISTAGRAMEQUALIZE = 7;           //色调均化\n        public const int ID_BRIGHTCONTRAST = 8;              //亮度对比度\n        public const int ID_COLORLEVEL = 9;                  //色阶\n        public const int ID_HSL = 10;                        //色相饱和度亮度\n        public const int ID_COLORBALANCE = 11;               //色彩平衡\n        public const int ID_INVERT = 12;                     //反相\n        public const int ID_POSTERIZE = 13;                  //色调分离\n        public const int ID_THRESHOLD = 14;                  //阈值\n        public const int ID_DESATURATE = 15;                 //去色\n        public const int ID_HIGHLIGHTSHADOW = 16;            //高光阴影\n        public const int ID_EXPOSURE = 17;                   //曝光\n        public const int ID_COLORTEMPEATURE = 18;            //色温\n        public const int ID_FINDEDGES = 19;                  //查找边缘\n        public const int ID_RELIEF = 20;                     //浮雕\n        public const int ID_DIFUSSION = 21;                  //扩散\n        public const int ID_OVEREXPOSURE = 22;               //曝光过度\n        public const int ID_SURFACEBLUR = 23;                //表面模糊\n        public const int ID_MOTIONBLUR = 24;                 //动感模糊\n        public const int ID_MEANBLUR = 25;                   //均值模糊\n        public const int ID_GAUSSBLUR = 26;                  //高斯模糊\n        public const int ID_RADIAL = 27;                     //旋转模糊\n        public const int ID_ZOOMBLUR = 28;                   //缩放模糊\n        public const int ID_MEAN = 29;                       //平均\n        public const int ID_MOSCIA = 30;                     //马赛克\n        public const int ID_FRAGMENT = 31;                   //碎片\n        public const int ID_HIGHPASS = 32;                   //高反差保留\n        public const int ID_USM = 33;                        //USM锐化\n        public const int ID_CHANNELMIXER = 34;               //通道混合器\n        public const int ID_BLACKWHITE = 35;                 //黑白\n        public const int ID_GAMMA = 36;                      //Gamma\n        public const int ID_MEDIANFILTER = 37;               //中间色\n        public const int ID_MAXFILTER = 38;                  //最大值\n        public const int ID_MINFILTER = 39;                  //最小值\n        public const int ID_NATURALSATURATION = 40;          //自然饱和度\n        public const int ID_IMAGEWARP_WAVE = 41;             //Wave变形\n        public const int ID_SMARTBLUR = 42;                  //Smart blur\n        public const int ID_ANISOTROPICFILTER = 43;          //Anisotropic filter\n        public const int ID_DISPLACEMENTFILTER = 44;         //Displacement filter\n        public const int ID_NOISEEFFECT = 45;                //Noise effect\n\n\n\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/LevelForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class LevelForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.comboBox1 = new System.Windows.Forms.ComboBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.label2 = new System.Windows.Forms.Label();\n            this.label3 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.textBox4 = new System.Windows.Forms.TextBox();\n            this.textBox5 = new System.Windows.Forms.TextBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(105, 316);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 0;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // comboBox1\n            // \n            this.comboBox1.FormattingEnabled = true;\n            this.comboBox1.Items.AddRange(new object[] {\n            \"RGB\",\n            \"红\",\n            \"绿\",\n            \"蓝\"});\n            this.comboBox1.Location = new System.Drawing.Point(115, 42);\n            this.comboBox1.Name = \"comboBox1\";\n            this.comboBox1.Size = new System.Drawing.Size(121, 20);\n            this.comboBox1.TabIndex = 1;\n            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(47, 45);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(53, 12);\n            this.label1.TabIndex = 2;\n            this.label1.Text = \"通道(C):\";\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(19, 69);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(256, 150);\n            this.pictureBox1.TabIndex = 3;\n            this.pictureBox1.TabStop = false;\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(11, 23);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(65, 12);\n            this.label2.TabIndex = 4;\n            this.label2.Text = \"输入色阶：\";\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(11, 57);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(65, 12);\n            this.label3.TabIndex = 5;\n            this.label3.Text = \"输出色阶：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(82, 20);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(49, 21);\n            this.textBox1.TabIndex = 6;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(139, 20);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(49, 21);\n            this.textBox2.TabIndex = 7;\n            this.textBox2.Text = \"1.00\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(196, 20);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(49, 21);\n            this.textBox3.TabIndex = 8;\n            this.textBox3.Text = \"255\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            this.textBox3.TextChanged += new System.EventHandler(this.textBox3_TextChanged);\n            // \n            // textBox4\n            // \n            this.textBox4.Location = new System.Drawing.Point(82, 54);\n            this.textBox4.Name = \"textBox4\";\n            this.textBox4.Size = new System.Drawing.Size(49, 21);\n            this.textBox4.TabIndex = 9;\n            this.textBox4.Text = \"0\";\n            this.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            this.textBox4.TextChanged += new System.EventHandler(this.textBox4_TextChanged);\n            // \n            // textBox5\n            // \n            this.textBox5.Location = new System.Drawing.Point(196, 54);\n            this.textBox5.Name = \"textBox5\";\n            this.textBox5.Size = new System.Drawing.Size(49, 21);\n            this.textBox5.TabIndex = 10;\n            this.textBox5.Text = \"255\";\n            this.textBox5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            this.textBox5.TextChanged += new System.EventHandler(this.textBox5_TextChanged);\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Controls.Add(this.textBox5);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox4);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Location = new System.Drawing.Point(19, 227);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(256, 87);\n            this.groupBox1.TabIndex = 11;\n            this.groupBox1.TabStop = false;\n            this.groupBox1.Text = \"色阶设置\";\n            // \n            // LevelForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(295, 350);\n            this.Controls.Add(this.groupBox1);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.label1);\n            this.Controls.Add(this.comboBox1);\n            this.Controls.Add(this.skinButton1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(295, 350);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(295, 350);\n            this.Name = \"LevelForm\";\n            this.Text = \"色阶\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.ComboBox comboBox1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.TextBox textBox2;\n        private System.Windows.Forms.TextBox textBox3;\n        private System.Windows.Forms.TextBox textBox4;\n        private System.Windows.Forms.TextBox textBox5;\n        private System.Windows.Forms.GroupBox groupBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/LevelForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing System.Drawing.Imaging;\n\nnamespace TestDemo\n{\n    unsafe public partial class LevelForm : CCWin.Skin_Mac\n    {\n        public LevelForm(string path)\n        {\n            InitializeComponent();\n            comboBox1.SelectedIndex = 0;\n            this.DoubleBuffered = true;\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                DrawHistogram(curBitmap, 0);\n            }\n        }\n        private Bitmap curBitmap = null;\n        private int leftInput = 0;\n        private double midInput = 0;\n        private int rightInput = 255;\n        private int leftOutput = 0;\n        private int rightOutput = 255;\n        private int channel = 0;\n        public int getChannel\n        {\n            get { return channel; }\n        }\n        public int getLeftInput\n        {\n            get { return leftInput; }\n        }\n        public double getMidInput\n        {\n            get { return midInput; }\n        }\n        public int getRightInput\n        {\n            get { return rightInput; }\n        }\n        public int getLeftOutput\n        {\n            get { return leftOutput; }\n        }\n        public int getRightOutput\n        {\n            get { return rightOutput; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            leftInput = Convert.ToInt32(textBox1.Text);\n            midInput = Convert.ToDouble(textBox2.Text);\n            rightInput = Convert.ToInt32(textBox3.Text);\n            leftOutput = Convert.ToInt32(textBox4.Text);\n            rightOutput = Convert.ToInt32(textBox5.Text);\n            channel = comboBox1.SelectedIndex;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void textBox1_TextChanged(object sender, EventArgs e)\n        {\n            try\n            {\n                leftInput = Convert.ToInt32(textBox1.Text);\n                rightInput = Convert.ToInt32(textBox3.Text);\n                rightInput = Math.Min(255, Math.Max(0, rightInput));\n                leftInput = Math.Min(255, Math.Max(0, leftInput));\n                if (leftInput > rightOutput - 2)\n                    leftInput = rightOutput - 2;\n                textBox1.Text = leftInput.ToString();\n                textBox3.Text = rightInput.ToString();\n            }\n            catch { return; }\n        }\n\n        private void textBox3_TextChanged(object sender, EventArgs e)\n        {\n            try{\n            leftInput = Convert.ToInt32(textBox1.Text);\n            rightInput = Convert.ToInt32(textBox3.Text);\n            rightInput = Math.Min(255, Math.Max(0, rightInput));\n            leftInput = Math.Min(255, Math.Max(0, leftInput));\n            if (leftInput > rightOutput - 2)\n                rightOutput = leftInput + 2;\n            textBox1.Text = leftInput.ToString();\n            textBox3.Text = rightInput.ToString();\n            }\n            catch { return; }\n        }\n        private void DrawHistogram(Bitmap tmp, int channel)\n        {\n            if (tmp != null)\n            {\n                int w = tmp.Width;\n                int h = tmp.Height;\n                int[] gray = new int[256];\n                int[] r = new int[256];\n                int[] g = new int[256];\n                int[] b = new int[256];\n                BitmapData srcData = tmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n                byte* p = (byte*)srcData.Scan0;\n                int offset = srcData.Stride - w * 4;\n                for (int j = 0; j < h; j++)\n                {\n                    for (int i = 0; i < w; i++)\n                    {\n                        gray[(int)((p[0] + p[1] + p[2]) / 3)]++;\n                        b[p[0]]++;\n                        g[p[1]]++;\n                        r[p[2]]++;\n                        p += 4;\n                    }\n                    p += offset;\n                }\n                tmp.UnlockBits(srcData);\n                Bitmap grayHisBmp = new Bitmap(System.Windows.Forms.Application.StartupPath + \"\\\\hisBmp.jpg\");\n                Graphics grayGra = Graphics.FromImage(grayHisBmp);\n                Point start;\n                Point end;\n                Pen p0 = new Pen(Color.Black, 1);\n                Pen p1 = new Pen(Color.Red, 1);\n                Pen p2 = new Pen(Color.Green, 1);\n                Pen p3 = new Pen(Color.Blue, 1);\n                int grayMax = gray.Max();\n                int rMax = r.Max();\n                int gMax = g.Max();\n                int bMax = b.Max();\n                switch (channel)\n                {\n                    case 0:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - gray[i] * 150 / (grayMax));\n                            grayGra.DrawLine(p0, start, end);\n                        }\n                        break;\n                    case 1:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - r[i] * 150 / (rMax));\n                            grayGra.DrawLine(p0, start, end);\n                        }\n                        break;\n                    case 2:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - g[i] * 150 / (gMax));\n                            grayGra.DrawLine(p0, start, end);\n                        }\n                        break;\n                    case 3:\n                        for (int i = 0; i < 256; i++)\n                        {\n                            start = new Point(i, 0);\n                            end = new Point(i, 150 - b[i] * 150 / (bMax));\n                            grayGra.DrawLine(p0, start, end);\n                        }\n                        break;\n                }\n                grayGra.Dispose();\n                pictureBox1.Image = (Image)grayHisBmp;\n            }\n        }\n\n        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)\n        {\n            DrawHistogram(curBitmap, comboBox1.SelectedIndex);\n        }\n\n        private void textBox2_TextChanged(object sender, EventArgs e)\n        {\n            //string t = textBox2.Text.ToString();\n            //try{\n            //    midInput = Convert.ToDouble(t);\n            //midInput = Math.Min(9.99, Math .Max(midInput,0));\n            //textBox2.Text = midInput.ToString();\n            //}\n            //catch { return; }\n        }\n\n        private void textBox4_TextChanged(object sender, EventArgs e)\n        {\n            try{\n            leftOutput = Convert.ToInt32(textBox4.Text);\n            leftOutput = Math.Min(255, Math.Max(leftOutput, 0));\n            textBox4.Text = leftOutput.ToString();\n            }\n            catch { return; }\n        }\n\n        private void textBox5_TextChanged(object sender, EventArgs e)\n        {\n            try\n            {\n                rightOutput = Convert.ToInt32(textBox5.Text);\n                rightOutput = Math.Min(255, Math.Max(rightOutput, 0));\n                textBox5.Text = rightOutput.ToString();\n            }\n            catch { return; }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/LevelForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MaxForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MaxForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 20;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"20\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MaxForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MaxForm\";\n            this.Text = \"最大值\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MaxForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MaxForm : CCWin.Skin_Mac\n    {\n        public MaxForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MaxFilterProcess(curBitmap, radius);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 20;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.MaxFilterProcess(curBitmap, radius);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MaxForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MeanBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MeanBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 11;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 10;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 20;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"20\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MeanBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MeanBlurForm\";\n            this.Text = \"均值模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MeanBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MeanBlurForm : CCWin.Skin_Mac\n    {\n        public MeanBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MeanFilterProcess(curBitmap, radius);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 20;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.MeanFilterProcess(curBitmap, radius);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MeanBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MedianForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MedianForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 13;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 20;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"20\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MedianForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MiniSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MedianForm\";\n            this.Text = \"中间色\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MedianForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MedianForm : CCWin.Skin_Mac\n    {\n        public MedianForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MedianFilterProcess(curBitmap, radius);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 20;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.MedianFilterProcess(curBitmap, radius);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MedianForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MessageForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MessageForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.messageBtn = new CCWin.SkinControl.SkinButton();\n            this.skinLabel1 = new CCWin.SkinControl.SkinLabel();\n            this.SuspendLayout();\n            // \n            // messageBtn\n            // \n            this.messageBtn.BackColor = System.Drawing.Color.Transparent;\n            this.messageBtn.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.messageBtn.DownBack = null;\n            this.messageBtn.Location = new System.Drawing.Point(115, 99);\n            this.messageBtn.MouseBack = null;\n            this.messageBtn.Name = \"messageBtn\";\n            this.messageBtn.NormlBack = null;\n            this.messageBtn.Size = new System.Drawing.Size(75, 23);\n            this.messageBtn.TabIndex = 0;\n            this.messageBtn.Text = \"确定\";\n            this.messageBtn.UseVisualStyleBackColor = false;\n            this.messageBtn.Click += new System.EventHandler(this.messageBtn_Click);\n            // \n            // skinLabel1\n            // \n            this.skinLabel1.BackColor = System.Drawing.Color.Transparent;\n            this.skinLabel1.BorderColor = System.Drawing.Color.White;\n            this.skinLabel1.Font = new System.Drawing.Font(\"Microsoft YaHei\", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));\n            this.skinLabel1.Location = new System.Drawing.Point(19, 60);\n            this.skinLabel1.Name = \"skinLabel1\";\n            this.skinLabel1.Size = new System.Drawing.Size(261, 23);\n            this.skinLabel1.TabIndex = 1;\n            this.skinLabel1.Text = \"Error\";\n            this.skinLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\n            // \n            // MessageForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(295, 142);\n            this.Controls.Add(this.skinLabel1);\n            this.Controls.Add(this.messageBtn);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(295, 142);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(295, 142);\n            this.Name = \"MessageForm\";\n            this.Text = \"Message\";\n            this.TitleCenter = false;\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private CCWin.SkinControl.SkinButton messageBtn;\n        private CCWin.SkinControl.SkinLabel skinLabel1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MessageForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing CCWin;\n\nnamespace TestDemo\n{\n    public partial class MessageForm : Skin_Mac\n    {\n        public MessageForm(string msg)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;  \n            skinLabel1.Text = msg.ToString();\n        }\n        private void messageBtn_Click(object sender, EventArgs e)\n        {\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MessageForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MinForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MinForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 20;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"20\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MinForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MinForm\";\n            this.Text = \"最小值\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MinForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MinForm : CCWin.Skin_Mac\n    {\n        public MinForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MinFilterProcess(curBitmap, radius);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 20;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                pictureBox1.Image = (Image)zPhoto.MinFilterProcess(curBitmap, radius);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MinForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MosciaForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MosciaForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 6;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 6;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"数量：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"6\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MosciaForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MosciaForm\";\n            this.Text = \"马赛克\";\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MosciaForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MosciaForm : CCWin.Skin_Mac\n    {\n        public MosciaForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MosaicProcess(curBitmap, blocksize);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int blocksize = 6;\n        public int getBlocksize\n        {\n            get { return blocksize; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            blocksize = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                blocksize = skinHScrollBar1.Value;\n                textBox1.Text = blocksize.ToString();\n                pictureBox1.Image = (Image)zPhoto.MosaicProcess(curBitmap, blocksize);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MosciaForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MotionBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class MotionBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 11;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(6, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 10;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 209;\n            this.skinHScrollBar2.Minimum = 1;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 14;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"距离(D)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"14\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 369;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 90;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"角度(A)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"90\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // MotionBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"MotionBlurForm\";\n            this.Text = \"动感模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MotionBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class MotionBlurForm : CCWin.Skin_Mac\n    {\n        public MotionBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.MotionBlur(curBitmap, angle, distance);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int angle = 90;\n        private int distance = 14;\n        public int getAngle\n        {\n            get { return angle; }\n        }\n        public int getDistance\n        {\n            get { return distance; }\n        }\n        //angle\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                angle = skinHScrollBar1.Value;\n                distance = skinHScrollBar2.Value;\n                textBox1.Text = angle.ToString();\n                textBox2.Text = distance.ToString();\n                pictureBox1.Image = (Image)zPhoto.MotionBlur(curBitmap, angle, distance);\n            }\n        }\n        //distance\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                angle = skinHScrollBar1.Value;\n                distance = skinHScrollBar2.Value;\n                textBox1.Text = angle.ToString();\n                textBox2.Text = distance.ToString();\n                pictureBox1.Image = (Image)zPhoto.MotionBlur(curBitmap, angle, distance);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            angle = skinHScrollBar1.Value;\n            distance = skinHScrollBar2.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/MotionBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/NSaturationForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class NSaturationForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(210, 39);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(10, 36);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Minimum = -100;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(22, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(77, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"Saturation：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // NSaturationForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MaxSize = new System.Drawing.Size(0, 0);\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"NSaturationForm\";\n            this.Text = \"自然饱和度\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/NSaturationForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class NSaturationForm :  CCWin.Skin_Mac\n    {\n        public NSaturationForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.NaturalSaturationProcess(curBitmap, saturation);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int saturation = 0;\n        public int getSaturation\n        {\n            get { return saturation; }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            saturation = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                saturation = skinHScrollBar1.Value;\n                textBox1.Text = saturation.ToString();\n                pictureBox1.Image = (Image)zPhoto.NaturalSaturationProcess(curBitmap, saturation);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/NSaturationForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/PosterizeForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class PosterizeForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 3;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 2;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 264;\n            this.skinHScrollBar1.Minimum = 2;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 2;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"色阶(L)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"2\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // PosterizeForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"PosterizeForm\";\n            this.Text = \"色调分离\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/PosterizeForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class PosterizeForm : CCWin.Skin_Mac\n    {\n        public PosterizeForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.Posterize(curBitmap, skinHScrollBar1.Value);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int levelNum = 2;\n        public int getLevelNum\n        {\n            get { return levelNum; }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            levelNum = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                textBox1.Text = skinHScrollBar1.Value.ToString();\n                pictureBox1.Image = (Image)zPhoto.Posterize(curBitmap, skinHScrollBar1.Value);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/PosterizeForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Program.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    static class Program\n    {\n        /// <summary>\n        /// The main entry point for the application.\n        /// </summary>\n        [STAThread]\n        static void Main()\n        {\n            Application.EnableVisualStyles();\n            Application.SetCompatibleTextRenderingDefault(false);\n            Application.Run(new Form1());\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TestDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TestDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"5003537c-d376-4240-b595-84c59c748fdd\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace TestDemo.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Resources {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"TestDemo.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace TestDemo.Properties {\n    \n    \n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"10.0.0.0\")]\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\n        \n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\n        \n        public static Settings Default {\n            get {\n                return defaultInstance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    <Profile Name=\"(Default)\" />\n  </Profiles>\n  <Settings />\n</SettingsFile>\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RadialBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class RadialBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 10;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"数量(A)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"10\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // RadialBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"RadialBlurForm\";\n            this.Text = \"旋转模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RadialBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class RadialBlurForm : CCWin.Skin_Mac\n    {\n        public RadialBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.RadialBlurProcess(curBitmap, amount);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int amount = 10;\n        public int getAmount\n        {\n            get { return amount; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                amount = skinHScrollBar1.Value;\n                textBox1.Text = amount.ToString();\n                pictureBox1.Image = (Image)zPhoto.RadialBlurProcess(curBitmap, amount);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            amount = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RadialBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ReliefForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ReliefForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 11;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 509;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 500;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(41, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"数量：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"500\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 369;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 90;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"角度：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"90\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // ReliefForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.groupBox1);\n            this.Controls.Add(this.pictureBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"ReliefForm\";\n            this.Text = \"浮雕\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ReliefForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ReliefForm : CCWin.Skin_Mac\n    {\n        public ReliefForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.Relief(curBitmap, angle, amount);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int angle = 90;\n        private int amount = 500;\n        public int getAngle\n        {\n            get { return angle; }\n        }\n        public int getAmount\n        {\n            get { return amount; }\n        }\n        //角度\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                angle = skinHScrollBar1.Value;\n                amount = skinHScrollBar2.Value;\n                textBox1.Text = angle.ToString();\n                textBox2.Text = amount.ToString();\n                pictureBox1.Image = (Image)zPhoto.Relief(curBitmap, angle, amount);\n            }\n        }\n        //数量\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                angle = skinHScrollBar1.Value;\n                amount = skinHScrollBar2.Value;\n                textBox1.Text = angle.ToString();\n                textBox2.Text = amount.ToString();\n                pictureBox1.Image = (Image)zPhoto.Relief(curBitmap, angle, amount);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            angle = skinHScrollBar1.Value;\n            amount = skinHScrollBar2.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ReliefForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RotateForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class RotateForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.groupBox1.SuspendLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.SuspendLayout();\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 0;\n            this.groupBox1.TabStop = false;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"角度：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 1;\n            this.pictureBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 369;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // RotateForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"RotateForm\";\n            this.Text = \"图像旋转\";\n            this.TitleCenter = false;\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RotateForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class RotateForm : CCWin.Skin_Mac\n    {\n        public RotateForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private int degree = 0;\n        private Bitmap curBitmap = null;\n        public int getDegree\n        {\n            get\n            {\n                return degree;\n            }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            degree = Convert.ToInt32(textBox1.Text);\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            textBox1.Text = skinHScrollBar1.Value.ToString();\n            pictureBox1.Image = (Image)zPhoto.TransformRotation(curBitmap, skinHScrollBar1.Value, 1, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/RotateForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SmartBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class SmartBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 11;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(6, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 10;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 264;\n            this.skinHScrollBar2.Minimum = 2;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 25;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"阈值(T)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"25\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 19;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 3;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"3\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // SmartBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.Name = \"SmartBlurForm\";\n            this.Text = \"SmartBlur\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SmartBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class SmartBlurForm : CCWin.Skin_Mac\n    {\n        public SmartBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.SmartBlurProcess(curBitmap, radius, threshold);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 3;\n        private int threshold = 25;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        public int getThreshld\n        {\n            get { return threshold; }\n        }\n        //radius\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                threshold = skinHScrollBar2.Value;\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.SmartBlurProcess(curBitmap, radius, threshold);\n            }\n        }\n        //threshold\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                threshold = skinHScrollBar2.Value;\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.SmartBlurProcess(curBitmap, radius, threshold);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            threshold = skinHScrollBar2.Value;\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SmartBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SurfaceBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class SurfaceBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 9;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(6, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 8;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 264;\n            this.skinHScrollBar2.Minimum = 2;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 28;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"阈值(T)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"28\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 19;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 5;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"5\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // SurfaceBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"SurfaceBlurForm\";\n            this.Text = \"表面模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SurfaceBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class SurfaceBlurForm : CCWin.Skin_Mac\n    {\n        public SurfaceBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.SurfaceBlur(curBitmap, threshold, radius);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 5;\n        private int threshold = 28;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        public int getThreshld\n        {\n            get { return threshold; }\n        }\n        //radius\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                threshold = skinHScrollBar2.Value;\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.SurfaceBlur(curBitmap, threshold, radius);\n            }\n        }\n        //threshold\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                threshold = skinHScrollBar2.Value;\n                radius = skinHScrollBar1.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.SurfaceBlur(curBitmap, threshold, radius);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            threshold = skinHScrollBar2.Value;\n            radius = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/SurfaceBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/TempreatureForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class TempreatureForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 9;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 8;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 59;\n            this.skinHScrollBar1.Minimum = -50;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"色温：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // TempreatureForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"TempreatureForm\";\n            this.Text = \"色温调节\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/TempreatureForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class TempreatureForm : CCWin.Skin_Mac\n    {\n        public TempreatureForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)curBitmap;\n            }\n        }\n        private Bitmap curBitmap = null;\n        private int tempeature = 0;\n        private ZPhotoEngineDll zPhoto = null;\n        public int getTempeature\n        {\n            get { return tempeature; }\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                tempeature = skinHScrollBar1.Value;\n                textBox1.Text = tempeature.ToString();\n                pictureBox1.Image = (Image)zPhoto.ColorTemperatureProcess(curBitmap, tempeature);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            tempeature = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/TempreatureForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/TestDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{B42BF672-4C45-46EA-ABAC-364D7F99F507}</ProjectGuid>\n    <OutputType>WinExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TestDemo</RootNamespace>\n    <AssemblyName>TestDemo</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <TargetFrameworkProfile>\n    </TargetFrameworkProfile>\n    <FileAlignment>512</FileAlignment>\n    <IsWebBootstrapper>false</IsWebBootstrapper>\n    <PublishUrl>publish\\</PublishUrl>\n    <Install>true</Install>\n    <InstallFrom>Disk</InstallFrom>\n    <UpdateEnabled>false</UpdateEnabled>\n    <UpdateMode>Foreground</UpdateMode>\n    <UpdateInterval>7</UpdateInterval>\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\n    <UpdatePeriodically>false</UpdatePeriodically>\n    <UpdateRequired>false</UpdateRequired>\n    <MapFileExtensions>true</MapFileExtensions>\n    <ApplicationRevision>0</ApplicationRevision>\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\n    <UseApplicationTrust>false</UseApplicationTrust>\n    <BootstrapperEnabled>true</BootstrapperEnabled>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <DocumentationFile>\n    </DocumentationFile>\n  </PropertyGroup>\n  <PropertyGroup />\n  <PropertyGroup>\n    <ApplicationIcon>20160111094415978_easyicon_net_96.ico</ApplicationIcon>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"CSkin\">\n      <HintPath>C:\\Users\\Trent\\Downloads\\CSkin 15.3.10.1\\CSkin 4.0\\CSkin.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Deployment\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Windows.Forms\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AnisotropicFilterForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"AnisotropicFilterForm.Designer.cs\">\n      <DependentUpon>AnisotropicFilterForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"BlackWhiteForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"BlackWhiteForm.Designer.cs\">\n      <DependentUpon>BlackWhiteForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ChannelMixForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ChannelMixForm.Designer.cs\">\n      <DependentUpon>ChannelMixForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ColorbalanceForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ColorbalanceForm.Designer.cs\">\n      <DependentUpon>ColorbalanceForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"DifussionForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"DifussionForm.Designer.cs\">\n      <DependentUpon>DifussionForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"DisplacementFrom.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"DisplacementFrom.Designer.cs\">\n      <DependentUpon>DisplacementFrom.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ExposureForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ExposureForm.Designer.cs\">\n      <DependentUpon>ExposureForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"GammaForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"GammaForm.Designer.cs\">\n      <DependentUpon>GammaForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"GaussBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"GaussBlurForm.Designer.cs\">\n      <DependentUpon>GaussBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"HighlightShadowForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"HighlightShadowForm.Designer.cs\">\n      <DependentUpon>HighlightShadowForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"HighpassForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"HighpassForm.Designer.cs\">\n      <DependentUpon>HighpassForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"HistagramForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"HistagramForm.Designer.cs\">\n      <DependentUpon>HistagramForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ImageProcessId.cs\" />\n    <Compile Include=\"LevelForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"LevelForm.Designer.cs\">\n      <DependentUpon>LevelForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MaxForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MaxForm.Designer.cs\">\n      <DependentUpon>MaxForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MeanBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MeanBlurForm.Designer.cs\">\n      <DependentUpon>MeanBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MedianForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MedianForm.Designer.cs\">\n      <DependentUpon>MedianForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MinForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MinForm.Designer.cs\">\n      <DependentUpon>MinForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MosciaForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MosciaForm.designer.cs\">\n      <DependentUpon>MosciaForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MotionBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MotionBlurForm.Designer.cs\">\n      <DependentUpon>MotionBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"NSaturationForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"NSaturationForm.Designer.cs\">\n      <DependentUpon>NSaturationForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"PosterizeForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"PosterizeForm.Designer.cs\">\n      <DependentUpon>PosterizeForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"FilterForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"FilterForm.Designer.cs\">\n      <DependentUpon>FilterForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"BrightContrastForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"BrightContrastForm.Designer.cs\">\n      <DependentUpon>BrightContrastForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"HSLForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"HSLForm.Designer.cs\">\n      <DependentUpon>HSLForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"MessageForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"MessageForm.Designer.cs\">\n      <DependentUpon>MessageForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"RadialBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"RadialBlurForm.Designer.cs\">\n      <DependentUpon>RadialBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ReliefForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ReliefForm.Designer.cs\">\n      <DependentUpon>ReliefForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"RotateForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"RotateForm.Designer.cs\">\n      <DependentUpon>RotateForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"SmartBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"SmartBlurForm.Designer.cs\">\n      <DependentUpon>SmartBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"SurfaceBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"SurfaceBlurForm.Designer.cs\">\n      <DependentUpon>SurfaceBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"TempreatureForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"TempreatureForm.Designer.cs\">\n      <DependentUpon>TempreatureForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ThresholdForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ThresholdForm.Designer.cs\">\n      <DependentUpon>ThresholdForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"USMForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"USMForm.Designer.cs\">\n      <DependentUpon>USMForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"Form1.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"Form1.Designer.cs\">\n      <DependentUpon>Form1.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ZoomBlurForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ZoomBlurForm.Designer.cs\">\n      <DependentUpon>ZoomBlurForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ZoomForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"ZoomForm.Designer.cs\">\n      <DependentUpon>ZoomForm.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"ZPhotoEngineDll.cs\" />\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <EmbeddedResource Include=\"AnisotropicFilterForm.resx\">\n      <DependentUpon>AnisotropicFilterForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"BlackWhiteForm.resx\">\n      <DependentUpon>BlackWhiteForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ChannelMixForm.resx\">\n      <DependentUpon>ChannelMixForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ColorbalanceForm.resx\">\n      <DependentUpon>ColorbalanceForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"DifussionForm.resx\">\n      <DependentUpon>DifussionForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"DisplacementFrom.resx\">\n      <DependentUpon>DisplacementFrom.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ExposureForm.resx\">\n      <DependentUpon>ExposureForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"GammaForm.resx\">\n      <DependentUpon>GammaForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"GaussBlurForm.resx\">\n      <DependentUpon>GaussBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"HighlightShadowForm.resx\">\n      <DependentUpon>HighlightShadowForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"HighpassForm.resx\">\n      <DependentUpon>HighpassForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"HistagramForm.resx\">\n      <DependentUpon>HistagramForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"LevelForm.resx\">\n      <DependentUpon>LevelForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MaxForm.resx\">\n      <DependentUpon>MaxForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MeanBlurForm.resx\">\n      <DependentUpon>MeanBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MedianForm.resx\">\n      <DependentUpon>MedianForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MinForm.resx\">\n      <DependentUpon>MinForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MosciaForm.resx\">\n      <DependentUpon>MosciaForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MotionBlurForm.resx\">\n      <DependentUpon>MotionBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"NSaturationForm.resx\">\n      <DependentUpon>NSaturationForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"PosterizeForm.resx\">\n      <DependentUpon>PosterizeForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"FilterForm.resx\">\n      <DependentUpon>FilterForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"BrightContrastForm.resx\">\n      <DependentUpon>BrightContrastForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"Form1.resx\">\n      <DependentUpon>Form1.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"HSLForm.resx\">\n      <DependentUpon>HSLForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"MessageForm.resx\">\n      <DependentUpon>MessageForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Resources.resx</DependentUpon>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <EmbeddedResource Include=\"RadialBlurForm.resx\">\n      <DependentUpon>RadialBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ReliefForm.resx\">\n      <DependentUpon>ReliefForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"RotateForm.resx\">\n      <DependentUpon>RotateForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"SmartBlurForm.resx\">\n      <DependentUpon>SmartBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"SurfaceBlurForm.resx\">\n      <DependentUpon>SurfaceBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"TempreatureForm.resx\">\n      <DependentUpon>TempreatureForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ThresholdForm.resx\">\n      <DependentUpon>ThresholdForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"USMForm.resx\">\n      <DependentUpon>USMForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ZoomBlurForm.resx\">\n      <DependentUpon>ZoomBlurForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"ZoomForm.resx\">\n      <DependentUpon>ZoomForm.cs</DependentUpon>\n    </EmbeddedResource>\n    <None Include=\"app.config\" />\n    <None Include=\"Properties\\Settings.settings\">\n      <Generator>SettingsSingleFileGenerator</Generator>\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\n    </None>\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Settings.settings</DependentUpon>\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <BootstrapperPackage Include=\".NETFramework,Version=v4.0,Profile=Client\">\n      <Visible>False</Visible>\n      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Client.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Windows.Installer.3.1\">\n      <Visible>False</Visible>\n      <ProductName>Windows Installer 3.1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"20160111094415978_easyicon_net_96.ico\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/TestDemo.csproj.user",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <EnableUnmanagedDebugging>true</EnableUnmanagedDebugging>\n  </PropertyGroup>\n  <PropertyGroup>\n    <PublishUrlHistory>publish\\</PublishUrlHistory>\n    <InstallUrlHistory />\n    <SupportUrlHistory />\n    <UpdateUrlHistory />\n    <BootstrapperUrlHistory />\n    <ErrorReportUrlHistory />\n    <FallbackCulture>en-US</FallbackCulture>\n    <VerifyUploadedFiles>false</VerifyUploadedFiles>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ThresholdForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ThresholdForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 5;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 4;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 264;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 128;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"阈值(T)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"128\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // ThresholdForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"ThresholdForm\";\n            this.Text = \"阈值\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ThresholdForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ThresholdForm : CCWin.Skin_Mac\n    {\n        public ThresholdForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.Threshold(curBitmap, threshold);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int threshold = 128;\n        public int getThresold\n        {\n            get { return threshold; }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            threshold = skinHScrollBar1.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                threshold = skinHScrollBar1.Value;\n                textBox1.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.Threshold(curBitmap, threshold);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ThresholdForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/USMForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class USMForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar3 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label3 = new System.Windows.Forms.Label();\n            this.textBox3 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(198, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(183, 183);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 15;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar3);\n            this.groupBox1.Controls.Add(this.label3);\n            this.groupBox1.Controls.Add(this.textBox3);\n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(7, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 186);\n            this.groupBox1.TabIndex = 14;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar3\n            // \n            this.skinHScrollBar3.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar3.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar3.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar3.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar3.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar3.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar3.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar3.Location = new System.Drawing.Point(19, 126);\n            this.skinHScrollBar3.Maximum = 264;\n            this.skinHScrollBar3.Name = \"skinHScrollBar3\";\n            this.skinHScrollBar3.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar3.TabIndex = 10;\n            this.skinHScrollBar3.Value = 10;\n            this.skinHScrollBar3.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar3_Scroll);\n            // \n            // label3\n            // \n            this.label3.AutoSize = true;\n            this.label3.Location = new System.Drawing.Point(29, 105);\n            this.label3.Name = \"label3\";\n            this.label3.Size = new System.Drawing.Size(59, 12);\n            this.label3.TabIndex = 8;\n            this.label3.Text = \"阈值(T)：\";\n            // \n            // textBox3\n            // \n            this.textBox3.Location = new System.Drawing.Point(100, 102);\n            this.textBox3.Name = \"textBox3\";\n            this.textBox3.Size = new System.Drawing.Size(57, 21);\n            this.textBox3.TabIndex = 9;\n            this.textBox3.Text = \"10\";\n            this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 34);\n            this.skinHScrollBar2.Maximum = 509;\n            this.skinHScrollBar2.Minimum = 1;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 200;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 13);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"数量(A)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 10);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"200\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 79);\n            this.skinHScrollBar1.Maximum = 509;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 15;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(53, 152);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 58);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 55);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"1.5\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // USMForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(389, 231);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(389, 231);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(389, 231);\n            this.Name = \"USMForm\";\n            this.Text = \"USM锐化\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar3;\n        private System.Windows.Forms.Label label3;\n        private System.Windows.Forms.TextBox textBox3;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/USMForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class USMForm : CCWin.Skin_Mac\n    {\n        public USMForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 300 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 300 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.USMProcess(curBitmap, (float)radius, amount, threshold);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private double radius = 1.5;\n        private int amount = 200;\n        private int threshold = 10;\n        public double getRadius\n        {\n            get { return radius; }\n        }\n        public int getAmount\n        {\n            get { return amount; }\n        }\n        public int getThreshold\n        {\n            get { return threshold; }\n        }\n        //amount\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                amount = skinHScrollBar2.Value;\n                radius = (double)skinHScrollBar1.Value / 10.0;\n                threshold = skinHScrollBar3.Value;\n                textBox2.Text = amount.ToString();\n                textBox1.Text = radius.ToString();\n                textBox3.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.USMProcess(curBitmap, (float)radius, amount, threshold);\n            }\n        }\n        //radius\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                amount = skinHScrollBar2.Value;\n                radius = (double)skinHScrollBar1.Value / 10.0;\n                threshold = skinHScrollBar3.Value;\n                textBox2.Text = amount.ToString();\n                textBox1.Text = radius.ToString();\n                textBox3.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.USMProcess(curBitmap, (float)radius, amount, threshold);\n            }\n        }\n        //threshold\n        private void skinHScrollBar3_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                amount = skinHScrollBar2.Value;\n                radius = (double)skinHScrollBar1.Value / 10.0;\n                threshold = skinHScrollBar3.Value;\n                textBox2.Text = amount.ToString();\n                textBox1.Text = radius.ToString();\n                textBox3.Text = threshold.ToString();\n                pictureBox1.Image = (Image)zPhoto.USMProcess(curBitmap, (float)radius, amount, threshold);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            amount = skinHScrollBar2.Value;\n            radius = (double)skinHScrollBar1.Value / 10.0;\n            threshold = skinHScrollBar3.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/USMForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZPhotoEngineDll.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Drawing;\nusing System.Drawing.Imaging;\nusing System.Runtime.InteropServices;\n\nnamespace TestDemo\n{\n    unsafe class ZPhotoEngineDll\n    {\n\n        #region PS基本变换模块\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Desaturate(byte* srcData, int width, int height, int stride, int ratio);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Threshold(byte* srcData, int width, int height, int stride, int threshold);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Saturation(byte* srcData, int width, int height, int stride, int saturation);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_NaturalSaturation(byte* srcData, int width, int height, int stride, int saturation);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Posterize(byte* srcData, int width, int height, int stride, int clusterNum);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_OverExposure(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Lightness(byte* srcData, int width, int height, int stride, int lightness);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Invert(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_HueAndSaturation(byte* srcData, int width, int height, int stride, int hue, int saturation);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_HistagramEqualize(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Curve(byte* srcData, int width, int height, int stride, int DestChannel, int InputLeftLimit, int InputMiddle, int InputRightLimit, int OutputLeftLimit, int OutputRightLimit);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_NLinearBrightContrast(byte* srcData, int width, int height, int stride, int bright, int contrast, int threshold);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_LinearBrightContrast(byte* srcData, int width, int height, int stride, int brightness, int contrast, int threshold);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_AutoContrast(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_AutoColorGradation(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ChannelMixProcess(byte* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Fragment(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_SurfaceBlur(byte* srcData, int width, int height, int stride, int threshold, int radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_RadialBlur(byte* srcData, int width, int height, int stride, int cenX, int cenY, int amount);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ZoomBlur(byte* srcData, int width, int height, int stride, int cenX, int cenY, int sampleRadius, int amount);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Relief(byte* srcData, int width, int height, int stride, int angle, int amount);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Mosaic(byte* srcData, int width, int height, int stride, int size);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ColorBalance(byte* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Diffusion(byte* srcData, int width, int height, int stride, int intensity);\n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_FastestGaussFilter(byte* srcData, int width, int height, int stride, float radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_HighPass(byte* srcData, int width, int height, int stride, float mRadius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_USM(byte* srcData, int width, int height, int stride, float radius, int amount, int threshold);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_FindEdges(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Shadow(byte* srcData, int width, int height, int stride, int intensity, int ratio);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Highlight(byte* srcData, int width, int height, int stride, int intensity, int ratio);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Exposure(byte* srcData, int width, int height, int stride, int intensity);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ColorTemperature(byte* srcData, int width, int height, int stride, int intensity);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_CalcWH(int[] inputImgSize, float angle, float scale, int transform_method, int[] outputImgSize, float[] H);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ImageTransformation(byte* pSrc, int[] srcImgSize, byte* pDst, int[] dstImgSize, float[] H, int Interpolation_method, int transform_method);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_MotionBlur(byte* srcData, int width, int height, int stride, int angle, int distance);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Mean(byte* srcData, int width, int height, int stride);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_FastMeanFilter(byte* srcData, int width, int height ,int stride,int radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ColorLevel(byte* srcData, int width, int height, int stride, int destChannel, byte inputLeftLimit, float inputMiddle, byte inputRightLimit, byte outputLeftLimit, byte outputRightLimit);\n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_Blackwhite(byte* srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_GammaCorrect(byte* srcData, int width, int height, int stride, int intensity);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.None, ExactSpelling = true)]\n        private static extern void ZPHOTO_MedianFilter(byte* srcData, int width, int height, int stride, int radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.None, ExactSpelling = true)]\n        private static extern void ZPHOTO_MaxFilter(byte* srcData, int width, int height, int stride, int radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.None, ExactSpelling = true)]\n        private static extern void ZPHOTO_MinFilter(byte* srcData, int width, int height, int stride,int radius);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_GlowingEdges(byte* srcData, int width, int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_ImageWarpWave(byte* srcData, int width, int height, int stride, int intensity);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_HighlightShadowPrecise(byte* srcData,int width, int height, int stride, float highlight, float shadow);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_LUTFilter(byte* srcData, int width, int height, int stride, byte* Map, int ratio);\n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_SmartBlurFilter(byte* srcData, int width, int height, int stride, int size, int threshold);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_AnisotropicFilter(byte* srcData, int width, int height, int stride, int iter, float k, float lambda, int offset);\n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_DisplacementFilter(byte* srcData, int width, int height, int stride, byte* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n        \n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern int ZPHOTO_NoiseEffect(byte *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        #endregion\n\n        #region 颜色空间转换模块\n       \n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern void ZPHOTO_RGBToYCbCr(int R, int G, int B, ref int Y, ref int Cb, ref int Cr);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern void ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, ref int Red, ref int Green, ref int Blue);\n\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern void ZPHOTO_RGBToLab(int Red, int Green, int Blue, ref int L, ref int A, ref int B);\n        [DllImport(\"ZPhotoEngine.dll\", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode, ExactSpelling = true)]\n        private static extern void ZPHOTO_LabToRGB(int L, int A, int B, ref int Red, ref int Green, ref int Blue);\n\n        #endregion\n\n        #region  API FOR C SHARP\n        public Bitmap NoiseEffect(Bitmap src, int ratio, float sigma, float phase)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_NoiseEffect((byte*)srcData.Scan0, w, h, srcData.Stride, ratio, sigma, phase);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap DisplacementFilter(Bitmap src, Bitmap mask, int hRatio, int vRatio)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            BitmapData maskData = mask.LockBits(new Rectangle(0, 0, mask.Width, mask.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_DisplacementFilter((byte*)srcData.Scan0, w, h, srcData.Stride, (byte*)maskData.Scan0, mask.Width, mask.Height,maskData.Stride, hRatio, vRatio);\n            a.UnlockBits(srcData);\n            mask.UnlockBits(maskData);\n            return a;\n        }\n        public Bitmap LUTFilter(Bitmap src, Bitmap map, int ratio)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            BitmapData mapData = map.LockBits(new Rectangle(0, 0, map.Width, map.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_LUTFilter((byte*)srcData.Scan0, w, h, srcData.Stride, (byte*)mapData.Scan0, ratio);\n            a.UnlockBits(srcData);\n            map.UnlockBits(mapData);\n            return a;\n        }\n        public Bitmap HighlightShadowPreciseAdjustProcess(Bitmap src, float highlight, float shadow)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_HighlightShadowPrecise((byte*)srcData.Scan0, w, h, srcData.Stride, highlight, shadow);\n            a.UnlockBits(srcData);\n            return a;\n        }\n\n        public Bitmap ImageWarpWaveProcess(Bitmap src, int intensity)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_ImageWarpWave((byte*)srcData.Scan0, w, h, srcData.Stride, intensity);\n            a.UnlockBits(srcData);\n            return a;\n        }\n\n        public Bitmap GlowingEdgesProcess(Bitmap src, int edgeSize, int edgeLightness, int edgeSmoothness)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_GlowingEdges((byte*)srcData.Scan0, w, h, srcData.Stride, edgeSize, edgeLightness, edgeSmoothness);\n            a.UnlockBits(srcData);\n            return a;\n        }\n\n        public Bitmap MedianFilterProcess(Bitmap src, int size)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_MedianFilter((byte*)srcData.Scan0, w, h, srcData.Stride, size);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap MaxFilterProcess(Bitmap src, int size)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_MaxFilter((byte*)srcData.Scan0, w, h, srcData.Stride,size);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap MinFilterProcess(Bitmap src, int size)\n        {\n            Bitmap a = new Bitmap(src);\n            int w = a.Width;\n            int h = a.Height;\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_MinFilter((byte*)srcData.Scan0, w, h, srcData.Stride, size);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap GammaCorrectProcess(Bitmap src, int intensity)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_GammaCorrect((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, intensity);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap ChannelMixProcess(Bitmap src, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_ChannelMixProcess((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, channel, kr, kg, kb, N, singleColor, constAdjust);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap MeanProcess(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Mean((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap AutoColorGradationAdjust(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_AutoColorGradation((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap AutoContrastAdjust(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_AutoContrast((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap HistagramEqualize(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_HistagramEqualize((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap MotionBlur(Bitmap src, int angle, int distance)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_MotionBlur((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, angle, distance);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap TransformRotation(Bitmap src, float angle, int transform_method, int Interpolation_method)\n        {\n\n            BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            int[] srcImgSize = new int[3] { src.Width, src.Height, srcData.Stride };\n            int[] dstImgSize = new int[3];\n            float[] H = new float[6];\n\n            ZPHOTO_CalcWH(srcImgSize, angle, 1.0f, transform_method, dstImgSize, H);\n\n            Bitmap dst = new Bitmap(dstImgSize[0], dstImgSize[1]);\n            BitmapData dstData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n\n            dstImgSize[2] = dstData.Stride;\n            ZPHOTO_ImageTransformation((byte*)srcData.Scan0, srcImgSize, (byte*)dstData.Scan0, dstImgSize, H, Interpolation_method, transform_method);\n\n            src.UnlockBits(srcData);\n            dst.UnlockBits(dstData);\n\n            return dst;\n        }\n\n        public Bitmap TransformScale(Bitmap src, float scale, int transform_method, int Interpolation_method)\n        {\n\n            BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            int[] srcImgSize = new int[3] { src.Width, src.Height, srcData.Stride };\n            int[] dstImgSize = new int[3];\n            float[] H = new float[6];\n\n            ZPHOTO_CalcWH(srcImgSize, 0, scale, transform_method, dstImgSize, H);\n\n            Bitmap dst = new Bitmap(dstImgSize[0], dstImgSize[1]);\n            BitmapData dstData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n\n            dstImgSize[2] = dstData.Stride;\n            ZPHOTO_ImageTransformation((byte*)srcData.Scan0, srcImgSize, (byte*)dstData.Scan0, dstImgSize, H, Interpolation_method, transform_method);\n\n            src.UnlockBits(srcData);\n            dst.UnlockBits(dstData);\n\n            return dst;\n        }\n\n        public Bitmap TransformRotationScale(Bitmap src, float angle, float scale, int transform_method, int Interpolation_method)\n        {\n\n            BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            int[] srcImgSize = new int[3] { src.Width, src.Height, srcData.Stride };\n            int[] dstImgSize = new int[3];\n            float[] H = new float[6];\n\n            ZPHOTO_CalcWH(srcImgSize, angle, scale, transform_method, dstImgSize, H);\n\n            Bitmap dst = new Bitmap(dstImgSize[0], dstImgSize[1]);\n            BitmapData dstData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n\n            dstImgSize[2] = dstData.Stride;\n            ZPHOTO_ImageTransformation((byte*)srcData.Scan0, srcImgSize, (byte*)dstData.Scan0, dstImgSize, H, Interpolation_method, transform_method);\n\n            src.UnlockBits(srcData);\n            dst.UnlockBits(dstData);\n\n            return dst;\n        }\n\n        public Bitmap TransformAffine(Bitmap src, float[] H, int transform_method, int Interpolation_method)\n        {\n\n            BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            int[] srcImgSize = new int[3] { src.Width, src.Height, srcData.Stride };\n            int[] dstImgSize = new int[3];\n            //float[] H = new float[6];\n\n            ZPHOTO_CalcWH(srcImgSize, 0, 1.0f, transform_method, dstImgSize, H);\n\n            Bitmap dst = new Bitmap(dstImgSize[0], dstImgSize[1]);\n            BitmapData dstData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n\n            dstImgSize[2] = dstData.Stride;\n            ZPHOTO_ImageTransformation((byte*)srcData.Scan0, srcImgSize, (byte*)dstData.Scan0, dstImgSize, H, Interpolation_method, transform_method);\n\n            src.UnlockBits(srcData);\n            dst.UnlockBits(dstData);\n\n            return dst;\n        }\n        public Bitmap Threshold(Bitmap src, int threshold)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Threshold((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, threshold);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n\n        public Bitmap TransformMirror(Bitmap srcBitmap, int transform_method)\n        {\n            Bitmap src = new Bitmap(srcBitmap);\n            BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            int[] srcImgSize = new int[3] { src.Width, src.Height, srcData.Stride };\n            int[] dstImgSize = new int[3];\n            float[] H = new float[6];\n\n            ZPHOTO_CalcWH(srcImgSize, 0, 1.0f, transform_method, dstImgSize, H);\n\n            Bitmap dst = new Bitmap(dstImgSize[0], dstImgSize[1]);\n            BitmapData dstData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n\n            dstImgSize[2] = dstData.Stride;\n\n            int Interpolation_method = 0;\n            ZPHOTO_ImageTransformation((byte*)srcData.Scan0, srcImgSize, (byte*)dstData.Scan0, dstImgSize, H, Interpolation_method, transform_method);\n\n            src.UnlockBits(srcData);\n            dst.UnlockBits(dstData);\n\n            return dst;\n        }\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap Fragment(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Fragment((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap HueSaturationAdjust(Bitmap src, int hue, int saturation)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_HueAndSaturation((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, hue, saturation);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap ColorTemperatureProcess(Bitmap src, int intensity)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_ColorTemperature((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, intensity);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap Posterize(Bitmap src, int clusterNum)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Posterize((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, clusterNum);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap Desaturate(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Desaturate((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, 100);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap OverExposure(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_OverExposure((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap ExposureAdjust(Bitmap src, int intensity)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Exposure((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, intensity);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap LightnessAdjustProcess(Bitmap src, int lightness)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Lightness((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, lightness);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        public Bitmap ShadowAdjust(Bitmap src, int intensity, int ratio)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Shadow((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, intensity, ratio);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap HighlightAdjust(Bitmap src, int intensity, int ratio)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Highlight((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, intensity, ratio);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap Invert(Bitmap src)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Invert((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap SurfaceBlur(Bitmap src, int threshold, int radius)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_SurfaceBlur((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, threshold, radius);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap NLinearBrightContrastAdjust(Bitmap src, int bright, int contrast, int threshold)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_NLinearBrightContrast((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, bright, contrast, threshold);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap LinearBrightContrastAdjust(Bitmap src, int bright, int contrast, int threshold)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_LinearBrightContrast((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, bright, contrast, threshold);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap FindEdgesProcess(Bitmap src)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_FindEdges((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap GaussFilterProcess(Bitmap src, float radius)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_FastestGaussFilter((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, radius);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap MeanFilterProcess(Bitmap src, int radius)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_FastMeanFilter((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, radius);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap HighPassProcess(Bitmap src, float radius)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_HighPass((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, radius);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap USMProcess(Bitmap src, float radius, int amount, int threshold)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_USM((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, radius, amount, threshold);\n            a.UnlockBits(srcData);\n            return a;\n        }\n\n        public Bitmap SaturationProcess(Bitmap src, int saturation)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Saturation((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, saturation);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap NaturalSaturationProcess(Bitmap src, int saturation)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_NaturalSaturation((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, saturation);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap ColorBalanceProcess(Bitmap src, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_ColorBalance((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, cyan, magenta, yellow, channel, preserveLuminosity);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap Relief(Bitmap src, int angle, int amount)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Relief((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, angle, amount);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap DiffusionProcess(Bitmap src, int intensity)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Diffusion((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, intensity);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap MosaicProcess(Bitmap src, int size)\n        {\n            Bitmap a = new Bitmap(src);\n            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Mosaic((byte*)srcData.Scan0, a.Width, a.Height, srcData.Stride, size);\n            a.UnlockBits(srcData);\n            return a;\n        }\n        public Bitmap RadialBlurProcess(Bitmap src, int amount)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_RadialBlur((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, dst.Width / 2, dst.Height / 2, amount);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap ZoomBlurProcess(Bitmap src, int radius, int amount)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_ZoomBlur((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, dst.Width / 2, dst.Height / 2, radius, amount);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap ColorLevelProcess(Bitmap src, int DestChannel, int InputLeftLimit, float InputMiddle, int InputRightLimit, int OutputLeftLimit, int OutputRightLimit)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            //f_TCurveAdjust((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, DestChannel, InputLeftLimit, InputMiddle, InputRightLimit, OutputLeftLimit, OutputRightLimit);\n            ZPHOTO_ColorLevel((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, DestChannel, (byte)InputLeftLimit, InputMiddle, (byte)InputRightLimit, (byte)OutputLeftLimit, (byte)OutputRightLimit);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap BlackwhiteProcess(Bitmap src, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_Blackwhite((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, kRed, kGreen, kBlue, kYellow, kCyan, kMagenta);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap LUTFilterProcess(Bitmap src, Bitmap map, int ratio)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            BitmapData mapData = map.LockBits(new Rectangle(0, 0, map.Width, map.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_LUTFilter((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, (byte*)mapData.Scan0, ratio);\n            dst.UnlockBits(srcData);\n            map.UnlockBits(mapData);\n            return dst;\n        }\n\n        ////////////////////////////////Update////////////////////////////////////////\n        public Bitmap SmartBlurProcess(Bitmap src, int size, int threshold)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_SmartBlurFilter((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, size, threshold);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        public Bitmap AnisotropicFilter(Bitmap src, int iter, float k)\n        {\n            Bitmap dst = new Bitmap(src);\n            BitmapData srcData = dst.LockBits(new Rectangle(0, 0, dst.Width, dst.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);\n            ZPHOTO_AnisotropicFilter((byte*)srcData.Scan0, dst.Width, dst.Height, srcData.Stride, iter, k, 0.25f, 3);\n            dst.UnlockBits(srcData);\n            return dst;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomBlurForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ZoomBlurForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar2 = new CCWin.SkinControl.SkinHScrollBar();\n            this.label2 = new System.Windows.Forms.Label();\n            this.textBox2 = new System.Windows.Forms.TextBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\n            this.pictureBox1.Location = new System.Drawing.Point(207, 38);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(150, 150);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 13;\n            this.pictureBox1.TabStop = false;\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar2);\n            this.groupBox1.Controls.Add(this.label2);\n            this.groupBox1.Controls.Add(this.textBox2);\n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(6, 35);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 12;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar2\n            // \n            this.skinHScrollBar2.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar2.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar2.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar2.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar2.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar2.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar2.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar2.Location = new System.Drawing.Point(19, 83);\n            this.skinHScrollBar2.Maximum = 109;\n            this.skinHScrollBar2.Minimum = 1;\n            this.skinHScrollBar2.Name = \"skinHScrollBar2\";\n            this.skinHScrollBar2.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar2.TabIndex = 7;\n            this.skinHScrollBar2.Value = 10;\n            this.skinHScrollBar2.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar2_Scroll);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.label2.Location = new System.Drawing.Point(29, 62);\n            this.label2.Name = \"label2\";\n            this.label2.Size = new System.Drawing.Size(59, 12);\n            this.label2.TabIndex = 5;\n            this.label2.Text = \"数量(A)：\";\n            // \n            // textBox2\n            // \n            this.textBox2.Location = new System.Drawing.Point(100, 59);\n            this.textBox2.Name = \"textBox2\";\n            this.textBox2.Size = new System.Drawing.Size(57, 21);\n            this.textBox2.TabIndex = 6;\n            this.textBox2.Text = \"10\";\n            this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(19, 36);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Minimum = 1;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Value = 10;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 15);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(59, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"半径(R)：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 12);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"10\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // ZoomBlurForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(371, 196);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(371, 196);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(371, 196);\n            this.Name = \"ZoomBlurForm\";\n            this.Text = \"缩放模糊\";\n            this.TitleCenter = false;\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar2;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.TextBox textBox2;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomBlurForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ZoomBlurForm : CCWin.Skin_Mac\n    {\n        public ZoomBlurForm(string path)\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;\n            zPhoto = new ZPhotoEngineDll();\n            Bitmap tmp = new Bitmap(path);\n            if (tmp != null)\n            {\n                curBitmap = new Bitmap(tmp, 150 * tmp.Width / Math.Max(tmp.Width, tmp.Height), 150 * tmp.Height / Math.Max(tmp.Width, tmp.Height));\n                pictureBox1.Image = (Image)zPhoto.ZoomBlurProcess(curBitmap, radius, amount);\n            }\n        }\n        private ZPhotoEngineDll zPhoto = null;\n        private Bitmap curBitmap = null;\n        private int radius = 10;\n        private int amount = 10;\n        public int getRadius\n        {\n            get { return radius; }\n        }\n        public int getAmount\n        {\n            get { return amount; }\n        }\n        //radius\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                amount = skinHScrollBar2.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = amount.ToString();\n                pictureBox1.Image = (Image)zPhoto.ZoomBlurProcess(curBitmap, radius, amount);\n            }\n        }\n        //amount\n        private void skinHScrollBar2_Scroll(object sender, ScrollEventArgs e)\n        {\n            if (curBitmap != null)\n            {\n                radius = skinHScrollBar1.Value;\n                amount = skinHScrollBar2.Value;\n                textBox1.Text = radius.ToString();\n                textBox2.Text = amount.ToString();\n                pictureBox1.Image = (Image)zPhoto.ZoomBlurProcess(curBitmap, radius, amount);\n            }\n        }\n\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            radius = skinHScrollBar1.Value;\n            amount = skinHScrollBar2.Value;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomBlurForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomForm.Designer.cs",
    "content": "﻿namespace TestDemo\n{\n    partial class ZoomForm\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.skinHScrollBar1 = new CCWin.SkinControl.SkinHScrollBar();\n            this.skinButton1 = new CCWin.SkinControl.SkinButton();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.skinHScrollBar1);\n            this.groupBox1.Controls.Add(this.skinButton1);\n            this.groupBox1.Controls.Add(this.label1);\n            this.groupBox1.Controls.Add(this.textBox1);\n            this.groupBox1.Location = new System.Drawing.Point(13, 38);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(185, 153);\n            this.groupBox1.TabIndex = 1;\n            this.groupBox1.TabStop = false;\n            // \n            // skinHScrollBar1\n            // \n            this.skinHScrollBar1.BackHover = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(216)))), ((int)(((byte)(243)))));\n            this.skinHScrollBar1.BackNormal = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(249)))), ((int)(((byte)(253)))));\n            this.skinHScrollBar1.BackPressed = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(202)))), ((int)(((byte)(239)))));\n            this.skinHScrollBar1.Base = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(230)))), ((int)(((byte)(247)))));\n            this.skinHScrollBar1.Border = System.Drawing.Color.FromArgb(((int)(((byte)(89)))), ((int)(((byte)(210)))), ((int)(((byte)(249)))));\n            this.skinHScrollBar1.Fore = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(135)))), ((int)(((byte)(192)))));\n            this.skinHScrollBar1.InnerBorder = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));\n            this.skinHScrollBar1.Location = new System.Drawing.Point(17, 81);\n            this.skinHScrollBar1.Maximum = 109;\n            this.skinHScrollBar1.Name = \"skinHScrollBar1\";\n            this.skinHScrollBar1.Size = new System.Drawing.Size(151, 17);\n            this.skinHScrollBar1.TabIndex = 4;\n            this.skinHScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.skinHScrollBar1_Scroll);\n            // \n            // skinButton1\n            // \n            this.skinButton1.BackColor = System.Drawing.Color.Transparent;\n            this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;\n            this.skinButton1.DownBack = null;\n            this.skinButton1.Location = new System.Drawing.Point(55, 115);\n            this.skinButton1.MouseBack = null;\n            this.skinButton1.Name = \"skinButton1\";\n            this.skinButton1.NormlBack = null;\n            this.skinButton1.Size = new System.Drawing.Size(75, 23);\n            this.skinButton1.TabIndex = 3;\n            this.skinButton1.Text = \"确定\";\n            this.skinButton1.UseVisualStyleBackColor = false;\n            this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(29, 44);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(41, 12);\n            this.label1.TabIndex = 1;\n            this.label1.Text = \"比例：\";\n            // \n            // textBox1\n            // \n            this.textBox1.Location = new System.Drawing.Point(100, 41);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(57, 21);\n            this.textBox1.TabIndex = 2;\n            this.textBox1.Text = \"0\";\n            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;\n            // \n            // ZoomForm\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.ClientSize = new System.Drawing.Size(210, 205);\n            this.Controls.Add(this.groupBox1);\n            this.MaximizeBox = false;\n            this.MaximumSize = new System.Drawing.Size(210, 205);\n            this.MaxSize = new System.Drawing.Size(0, 0);\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(210, 205);\n            this.MiniSize = new System.Drawing.Size(0, 0);\n            this.Name = \"ZoomForm\";\n            this.Text = \"图像缩放\";\n            this.TitleCenter = false;\n            this.groupBox1.ResumeLayout(false);\n            this.groupBox1.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.GroupBox groupBox1;\n        private CCWin.SkinControl.SkinHScrollBar skinHScrollBar1;\n        private CCWin.SkinControl.SkinButton skinButton1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.TextBox textBox1;\n\n    }\n}"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomForm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace TestDemo\n{\n    public partial class ZoomForm : CCWin.Skin_Mac\n    {\n        public ZoomForm()\n        {\n            InitializeComponent();\n            this.DoubleBuffered = true;  \n        }\n        private float scale = 0;\n        public float getScale\n        {\n            get\n            {\n                return scale;\n            }\n        }\n        private void skinButton1_Click(object sender, EventArgs e)\n        {\n            scale = (float)skinHScrollBar1.Value / 10.0f;\n            this.DialogResult = DialogResult.OK;\n            this.Close();\n        }\n\n        private void skinHScrollBar1_Scroll(object sender, ScrollEventArgs e)\n        {\n            textBox1.Text = ((double)skinHScrollBar1.Value / 10.0).ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/ZoomForm.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/app.config",
    "content": "<?xml version=\"1.0\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0\"/></startup></configuration>\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/bin/Release/TestDemo.exe.config",
    "content": "<?xml version=\"1.0\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0\"/></startup></configuration>\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/bin/Release/TestDemo.vshost.exe.config",
    "content": "<?xml version=\"1.0\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0\"/></startup></configuration>\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/bin/Release/TestDemo.vshost.exe.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\n  <assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\"/>\n  <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\n    <security>\n      <requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n        <requestedExecutionLevel level=\"asInvoker\" uiAccess=\"false\"/>\n      </requestedPrivileges>\n    </security>\n  </trustInfo>\n</assembly>\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/obj/x86/Debug/TestDemo.csproj.FileListAbsolute.txt",
    "content": "H:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.csprojResolveAssemblyReference.cache\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.AnisotropicFilterForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.BlackWhiteForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ChannelMixForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ColorbalanceForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.DifussionForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ExposureForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.GammaForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.GaussBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.HighlightShadowForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.HighpassForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.HistagramForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.LevelForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MaxForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MeanBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MedianForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MinForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MosciaForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MotionBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.NSaturationForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.PosterizeForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.FilterForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.BrightContrastForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.Form1.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.HSLForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.MessageForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.Properties.Resources.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.RadialBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ReliefForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.RotateForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.SmartBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.SurfaceBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.TempreatureForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ThresholdForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.USMForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ZoomBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.ZoomForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Debug\\TestDemo.csproj.GenerateResource.Cache\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo/obj/x86/Release/TestDemo.csproj.FileListAbsolute.txt",
    "content": "H:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.AnisotropicFilterForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.BlackWhiteForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ChannelMixForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ColorbalanceForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.DifussionForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ExposureForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.GammaForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.GaussBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.HighlightShadowForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.HighpassForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.HistagramForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.LevelForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MaxForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MeanBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MedianForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MinForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MosciaForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MotionBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.NSaturationForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.PosterizeForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.FilterForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.BrightContrastForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.Form1.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.HSLForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.MessageForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.Properties.Resources.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.RadialBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ReliefForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.RotateForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.SmartBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.SurfaceBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.TempreatureForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ThresholdForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.USMForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ZoomBlurForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.ZoomForm.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.csproj.GenerateResource.Cache\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\bin\\Release\\TestDemo.exe.config\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.csprojResolveAssemblyReference.cache\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\bin\\Release\\TestDemo.exe\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\bin\\Release\\TestDemo.pdb\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.DisplacementFrom.resources\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.exe\nH:\\ME\\Github项目\\ZPhotoEngine\\ZPHOTOENGINE\\PC\\PC-ProjectCodes\\TestDemo\\obj\\x86\\Release\\TestDemo.pdb\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/PC-ProjectCodes/TestDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 11.00\n# Visual Studio 2010\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TestDemo\", \"TestDemo\\TestDemo.csproj\", \"{B42BF672-4C45-46EA-ABAC-364D7F99F507}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Mixed Platforms = Debug|Mixed Platforms\n\t\tDebug|Win32 = Debug|Win32\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Mixed Platforms = Release|Mixed Platforms\n\t\tRelease|Win32 = Release|Win32\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Debug|Mixed Platforms.Build.0 = Debug|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Debug|Win32.ActiveCfg = Debug|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Debug|x86.Build.0 = Debug|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Release|Mixed Platforms.ActiveCfg = Release|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Release|Mixed Platforms.Build.0 = Release|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Release|Win32.ActiveCfg = Release|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Release|x86.ActiveCfg = Release|x86\n\t\t{B42BF672-4C45-46EA-ABAC-364D7F99F507}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/ZPhotoEngine.h",
    "content": "/*****************************************************************************\nCopyright:    Trent\nFile name:    ZPhotoEngine.h\nDescription:  ZPHOTO ENGINE LIBRARY FOR IMAGE PROCESSING LIKE PS\nAuthor:       Trent\nVersion:      V3.6\nDate:         2017-08-17\nMail:         dongtingyueh@163.com\n*****************************************************************************/\n\n#ifndef __T_PHOTOENGINE__\n#define __T_PHOTOENGINE__\n\n//////////////////////////////////////////////////////////////////////////////\n//ͼģʽ\nconst int BLEND_MODE_DARKEN                                       =  1;\nconst int BLEND_MODE_MULTIPLY                                     =  2;\nconst int BLEND_MODE_COLORBURN                                    =  3;\nconst int BLEND_MODE_LINEARBURN                                   =  4;\nconst int BLEND_MODE_DARKNESS                                     =  5;\nconst int BLEND_MODE_LIGHTEN                                      =  6;\nconst int BLEND_MODE_SCREEN                                       =  7;\nconst int BLEND_MODE_COLORDODGE                                   =  8;\nconst int BLEND_MODE_COLORLINEARDODGE                             =  9;\nconst int BLEND_MODE_LIGHTCOLOR                                   =  10;\nconst int BLEND_MODE_OVERLAY                                      =  11;\nconst int BLEND_MODE_SOFTLIGHT                                    =  12;\nconst int BLEND_MODE_HARDLIGHT                                    =  13;\nconst int BLEND_MODE_VIVIDLIGHT                                   =  14;\nconst int BLEND_MODE_LINEARLIGHT                                  =  15;\nconst int BLEND_MODE_PINLIGHT                                     =  16;\nconst int BLEND_MODE_SOLIDCOLORMIXING                             =  17;\nconst int BLEND_MODE_DIFFERENCE                                   =  18;\nconst int BLEND_MODE_EXCLUSION                                    =  19;\nconst int BLEND_MODE_SUBTRACTION                                  =  20;\nconst int BLEND_MODE_DIVIDE                                       =  21;\n///////////////////////////////////////////////////////////////////////////////\n#ifdef _MSC_VER\n\n#ifdef __cplusplus\n#define EXPORT extern \"C\" _declspec(dllexport)\n#else\n#define EXPORT __declspec(dllexport)\n#endif\n\n    //\n\t/*************************************************\n\tFunction:    ZPHOTO_Saturation\n\tDescription: Ͷȵ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t saturation-ͶֵΧ[0,512]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\t/*************************************************\n\tFunction:    ZPHOTO_Posterize\n\tDescription: ɫ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t clusterNum-ɫΧ[2,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\t/*************************************************\n\tFunction:    ZPHOTO_OverExposure\n\tDescription: ع.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);//ع\n\t/*************************************************\n\tFunction:    ZPHOTO_Lightness    \n\tDescription: ȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t lightness-ֵΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);//ȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Invert\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);//\n\t/*************************************************\n\tFunction:    ZPHOTO_HueAndSaturation\n\tDescription: ɫ౥Ͷȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t hue-ɫֵΧ[-180,180]\n\t\t\t\t saturation-ͶֵΧΪ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);//ɫ౥Ͷȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_HistagramEqualize\n\tDescription: ɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);//ɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Desaturate\n\tDescription: ȥɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ȥɫ̶ȣ[0-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);//ȥɫ\n   /*************************************************\n\tFunction:    ZPHOTO_Curve\n\tDescription: ߵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t knotsPos-XY飺ʼ+м+ĩβ㣬һspline\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_CurveLevel\n\tDescription: ɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t inputLeftLimit-СֵΧ[0,255]\n\t\t\t\t inputMiddle-мֵΧ[0,9.99]\n\t\t\t\t inputRightLimit-ֵΧ[0,255]\n\t\t\t\t outputLeftLimit-СֵΧ[0,255]\n\t\t\t\t outputRightLimit-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);//ɫ׵\n\t/*************************************************\n\tFunction:    ZPHOTO_NLinearBrightContrastAdjust\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-255,255]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_LinearBrightContrast\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-100,100]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Blackwhite\n\tDescription: ڰ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t kRed-ɫ,Χ[-200,300]\n\t\t\t\t kGreen-ɫ,Χ[-200,300]\n\t\t\t\t kBlue-ɫ,Χ[-200,300]\n\t\t\t\t kYellow-ɫ,Χ[-200,300]\n\t\t\t\t kCyan-ɫ,Χ[-200,300]\n\t\t\t\t kMagenta-,Χ[-200,300]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);//ڰ\n\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrast\n\tDescription: ԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrastAdjustWithParameters\n\tDescription: ƵԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradation\n\tDescription: Զɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradationAdjustWithParameters\n\tDescription: ƵԶɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Threshold\n\tDescription: ֵ(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);//ֵ\n\t/*************************************************\n\tFunction:    ZPHOTO_ChannelMixProcess\n\tDescription: ͨ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t channel-Red-0,Green-1,Blue-2,Gray-3\n\t\t\t\t kr-RedͨΧ[-200,200]\n\t\t\t\t kg-GreenͨΧ[-200,200]\n\t\t\t\t kb-BlueͨΧ[-200,200]\n\t\t\t\t N-ڱΧ[-200,200]\n\t\t\t\t singleColor-Ƿɫɫ-trueɫ-false\n\t\t\t\t constAdjust-Ƿִгڣ-true,-false\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastestGaussFilter\n\tDescription: ٸ˹ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);//˹˲\n\t/*************************************************\n\tFunction:    ZPHOTO_HighPass\n\tDescription: ߷\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);//߷\n\t/*************************************************\n\tFunction:    ZPHOTO_USM\n\tDescription: USM\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹뾶ΧΪ[0,1000]\n\t\t\t\t amount-񻯳̶ȣΧΪ[0,500]\n\t\t\t\t threshold-ֵΧΪ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\t/*************************************************\n\tFunction:    ZPHOTO_FindEdges\n\tDescription: ұԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);//ұԵ\n\t/////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //ͼϹ\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarken\n\tDescription: 䰵ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeMultiply\n\tDescription: Ƭģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorBurn\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearBurn\n\tDescription: Խģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarkness\n\tDescription: ɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLighten\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeScreen\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorDodge\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorLinearDodge\n\tDescription: ɫԼģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLightColor\n\tDescription: ǳɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeOverlay\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSoftLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeHardLight\n\tDescription: ǿģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeVividLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearLight\n\tDescription: Թģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModePinLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSolidColorMixing\n\tDescription: ʵɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDifference\n\tDescription: ֵģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeExclusion\n\tDescription: ųģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSubtraction\n\tDescription: ȥģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDivide\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDesaturate\n\tDescription: ȥɫ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorInvert\n\tDescription: \n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageBlendEffect\n\tDescription: ͼ\n\tInput:       baseData-ͼͼBufferʽΪ32λBGRA\n\t             width-ͼ\n\t\t\t\t height-ͼ߶\n\t\t\t\t stride-ͼStride\n\t\t\t\t mixData-ͼͼBufferСͼͼһ\n\t\t\t\t blendMode-ͼģʽ\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);\n    /////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //չ\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorTemperature\n\tDescription: ɫµ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɫǿȣΧ[-50,50]intensity < 0ɫintensity = 0,ԭͼintensity > 0ůɫ\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Shadow \n\tDescription: Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ӰǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Shadow(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Highlight\n\tDescription: ߹\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--߹ǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Highlight(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_HighlightShadowPrecise\n\tDescription: ߹Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t highlight--߹ǿֵȡֵΧΪ[-200,100]\n\t\t\t\t shadow-ӰǿֵȡֵΧΪ[-200,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\t/*************************************************\n\tFunction:    ZPHOTO_Exposure\n\tDescription: ع\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--عǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_CalcWH\n\tDescription: ͼ任֮Ŀ߼任HýӿZPHOTO_ImageTransformation       \n\tInput:\t     inputImgSize--ͼϢ\n\t\t\t\t angle--תǶֵȡֵΧΪ[-360-360]\n\t\t\t\t scale--ű任ֵȡֵ0\n\t\t\t\t transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\t\t\t\t outputImgSize--ͼϢ\n\t\t\t\t H--任飬Ϊ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageTransformation\n\tDescription: ͼ任\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             srcImgSize--ԭʼͼϢ\n                 dstData--ͼBufferСɽӿZPHOTO_CalcWH\n\t\t\t\t dstImgSize--ĿͼϢ\n\t\t\t\t H--任飬Ϊ6\n\t\t\t\t Interpolation_method--ֵѡinterpolation_bilinear,interpolation_nearest\n\t\t\t\t Transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastMeanFilter\n\tDescription: ֵģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius--ֵ˲뾶ȡֵΧΪ[0,width / 2]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_SobelFilter\n\tDescription: SobelԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\n\t//For Android Development\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBA2BGRA\n\tDescription: RGBAʽתBGRAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_BGRA2RGBA\n\tDescription: BGRAʽתRGBAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_Fragment\n\tDescription: Ƭ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_MotionBlur\n\tDescription: ˶ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-˶ģǶֵȡֵΧΪ[0,360]\n\t\t\t\t distance-˶ģֵȡֵΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\t/*************************************************\n\tFunction:    ZPHOTO_SurfaceBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ģֵֵȡֵΧΪ[0,255]\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,10]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_RadialBlur\n\tDescription: תģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ѡģX\n\t\t\t\t cenY-תģY\n\t\t\t\t amount-תģ̶ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_ZoomBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ģX\n\t\t\t\t cenY-ģY\n\t\t\t\t sampleRadius-ģ뾶ΧΪ[0-255]\n\t\t\t\t amount-ģ̶,ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Relief\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶   \n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-ǶȣΧΪ[0-360]\n\t\t\t\t amount-̶,ΧΪ[0-500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mean\n\tDescription: ƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mosaic\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-Mosaic뾶,ΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mosaic(unsigned char* srcData, int width, int height, int stride, int size);\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorBalance\n\tDescription: ɫƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cyan-ɫΧΪ[-100,100]\n\t\t\t\t magenta-죬ΧΪ[-100,100]\n\t\t\t\t yellow-ɫΧΪ[-100,100]\n\t\t\t\t channel-ͨѡRGB-0,R-1,G-2,B-3\n\t\t\t\t preserveLuminosity-true:ȣfalse:\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Diffusion\n\tDescription: ɢ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɢ̶ȣΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_LSNBlur\n\tDescription: LSNBlur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-LSNBlur뾶ΧΪ[0,200]\n\t\t\t\t delta-[0,500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\t/*************************************************\n\tFunction:    ZPHOTO_MedianFilter\n\tDescription: ֵ˲(мɫ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride,int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MaxFilter\n\tDescription: ֵ˲(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MinFilter\n\tDescription: Сֵ˲(Сֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_GlowingEdges\n\tDescription: Ե˾\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t edgeSize-ԵֵȡֵΧΪ[1,14]\n\t\t\t\t edgeLightness-ԵֵȡֵΧΪ[0,20]\n\t\t\t\t edgeSmoothness-ƽȣȡֵΧΪ[1,15]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageWarpWave\n\tDescription: Wave \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-γ̶ȣΧ[0, 100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToYCbCr\n\tDescription: RGBתYCbCr\n\tInput:       Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n\tEXPORT void ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\t/*************************************************\n\tFunction:    ZPHOTO_YCbCrToRGB\n\tDescription: YCbCrתRGB\t   \n\tInput: \t     Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToLab\n\tDescription: RGBתLAB\t   \n\tInput:    \t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\t/*************************************************\n\tFunction:    ZPHOTO_LabToRGB\n\tDescription: LABתRGB\t   \n\tInput:    \t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_GammaCorrect\n\tDescription: Gamma\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-GammaΧ[1,50]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\n    /******************************************************************************* \n    * Function Name  : Natural Saturation \n    * Description    : ȻͶ\n    * Input  srcData : image data\n    * Input  width   : image width\n    * Input  height  : image height\n    * Input  stride  : image stride\n    * Input  saturation     : saturation value to adjust from -100 to 100\n    * Output         : None \n    * Return         : 0-success, others failed\n    *******************************************************************************/\n\tEXPORT int ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tEXPORT int ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n/****************************************************Update***************************************************\n****************************************************Date:2018-06-21*******************************************\nContent:\nSmart blur filter\nAnisotropic Filter\n*************************************************************************************************************/\n/*************************************************\n\tFunction:    ZPHOTO_SmartBlurFilter\n\tDescription: Smart Blur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-ģ뾶ֵȡֵΧΪ[0,100]\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n/*************************************************\n\tFunction:    ZPHOTO_AnisotropicFilter\n\tDescription: Anisotropic Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t iter-ȡֵΧΪ[0,100]\n\t\t\t\t k-ɢϵΧ[0,]\n\t\t\t\t lambda-[0,0.35],default 0.25\n\t\t\t\t offset-[0,10],default 3\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n/*************************************************\n\tFunction:    ZPHOTO_DisplacementFilter\n\tDescription: Displacement Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t maskData-ûͼʽΪ32λBGRAʽ\n\t\t\t\t mWidth-ûͼ\n\t\t\t\t mHeight-ûͼ߶\n\t\t\t\t mStride-ûͼStride\n\t\t\t\t hRatio-ˮƽΧ[-100,100]\n\t\t\t\t vRatio-ֱΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n/*************************************************\n\tFunction:    ZPHOTO_NoiseEffect\n\tDescription: Noise effect\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ͼĻϱΧ[0,100]\n\t\t\t\t sigma-Χ[0,]\n\t\t\t\t phase-ȣΧ[0,]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\nEXPORT int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#else\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif    \n\t//\n\tint ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n    int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\tint ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);\n\tint ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);\n\tint ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);\n\tint ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);\n    int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\tint ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);\n\tint ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);\n    int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);\n    int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\n\tint ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);\n\tint ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);\n\tint ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\tint ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\tint ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\tint ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\n\t//V1.2\n\tint ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\tint ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\tint ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\tint ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\tint ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\tint ZPHOTO_Mosaic(unsigned char *srcData, int width, int height, int stride, int size);\n\tint ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\tint ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t\n\tvoid ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\tvoid ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\tvoid ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\tvoid ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t///ͼϹ\n\tint ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\tint ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\tint ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);//ͼ\n\n\t//չ\n\tint ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);\n\tint ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\tint ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n    int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\tint ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\tint ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\tint ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n    //For Android Development\n    int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n    int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\tint ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\tint ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\tint ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n\tint ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n\tint ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n\tint ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n    int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif\n\n\n\n#endif\n"
  },
  {
    "path": "ZPHOTOENGINE/PC/library/ReadMe.txt",
    "content": "shared library: ZPhotoEngine.dll\nstatic library: ZPhotoEngine.lib"
  },
  {
    "path": "ZPHOTOENGINE/PC/library/ZPhotoEngine.h",
    "content": "/*****************************************************************************\nCopyright:    Trent\nFile name:    ZPhotoEngine.h\nDescription:  ZPHOTO ENGINE LIBRARY FOR IMAGE PROCESSING LIKE PS\nAuthor:       Trent\nVersion:      V3.6\nDate:         2017-08-17\nMail:         dongtingyueh@163.com\n*****************************************************************************/\n\n#ifndef __T_PHOTOENGINE__\n#define __T_PHOTOENGINE__\n\n//////////////////////////////////////////////////////////////////////////////\n//ͼģʽ\nconst int BLEND_MODE_DARKEN                                       =  1;\nconst int BLEND_MODE_MULTIPLY                                     =  2;\nconst int BLEND_MODE_COLORBURN                                    =  3;\nconst int BLEND_MODE_LINEARBURN                                   =  4;\nconst int BLEND_MODE_DARKNESS                                     =  5;\nconst int BLEND_MODE_LIGHTEN                                      =  6;\nconst int BLEND_MODE_SCREEN                                       =  7;\nconst int BLEND_MODE_COLORDODGE                                   =  8;\nconst int BLEND_MODE_COLORLINEARDODGE                             =  9;\nconst int BLEND_MODE_LIGHTCOLOR                                   =  10;\nconst int BLEND_MODE_OVERLAY                                      =  11;\nconst int BLEND_MODE_SOFTLIGHT                                    =  12;\nconst int BLEND_MODE_HARDLIGHT                                    =  13;\nconst int BLEND_MODE_VIVIDLIGHT                                   =  14;\nconst int BLEND_MODE_LINEARLIGHT                                  =  15;\nconst int BLEND_MODE_PINLIGHT                                     =  16;\nconst int BLEND_MODE_SOLIDCOLORMIXING                             =  17;\nconst int BLEND_MODE_DIFFERENCE                                   =  18;\nconst int BLEND_MODE_EXCLUSION                                    =  19;\nconst int BLEND_MODE_SUBTRACTION                                  =  20;\nconst int BLEND_MODE_DIVIDE                                       =  21;\n///////////////////////////////////////////////////////////////////////////////\n#ifdef _MSC_VER\n\n#ifdef __cplusplus\n#define EXPORT extern \"C\" _declspec(dllexport)\n#else\n#define EXPORT __declspec(dllexport)\n#endif\n\n    //\n\t/*************************************************\n\tFunction:    ZPHOTO_Saturation\n\tDescription: Ͷȵ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t saturation-ͶֵΧ[0,512]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\t/*************************************************\n\tFunction:    ZPHOTO_Posterize\n\tDescription: ɫ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t clusterNum-ɫΧ[2,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\t/*************************************************\n\tFunction:    ZPHOTO_OverExposure\n\tDescription: ع.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);//ع\n\t/*************************************************\n\tFunction:    ZPHOTO_Lightness    \n\tDescription: ȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t lightness-ֵΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);//ȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Invert\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);//\n\t/*************************************************\n\tFunction:    ZPHOTO_HueAndSaturation\n\tDescription: ɫ౥Ͷȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t hue-ɫֵΧ[-180,180]\n\t\t\t\t saturation-ͶֵΧΪ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);//ɫ౥Ͷȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_HistagramEqualize\n\tDescription: ɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);//ɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Desaturate\n\tDescription: ȥɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ȥɫ̶ȣ[0-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);//ȥɫ\n   /*************************************************\n\tFunction:    ZPHOTO_Curve\n\tDescription: ߵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t knotsPos-XY飺ʼ+м+ĩβ㣬һspline\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_CurveLevel\n\tDescription: ɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t inputLeftLimit-СֵΧ[0,255]\n\t\t\t\t inputMiddle-мֵΧ[0,9.99]\n\t\t\t\t inputRightLimit-ֵΧ[0,255]\n\t\t\t\t outputLeftLimit-СֵΧ[0,255]\n\t\t\t\t outputRightLimit-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);//ɫ׵\n\t/*************************************************\n\tFunction:    ZPHOTO_NLinearBrightContrastAdjust\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-255,255]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_LinearBrightContrast\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-100,100]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Blackwhite\n\tDescription: ڰ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t kRed-ɫ,Χ[-200,300]\n\t\t\t\t kGreen-ɫ,Χ[-200,300]\n\t\t\t\t kBlue-ɫ,Χ[-200,300]\n\t\t\t\t kYellow-ɫ,Χ[-200,300]\n\t\t\t\t kCyan-ɫ,Χ[-200,300]\n\t\t\t\t kMagenta-,Χ[-200,300]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);//ڰ\n\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrast\n\tDescription: ԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrastAdjustWithParameters\n\tDescription: ƵԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradation\n\tDescription: Զɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradationAdjustWithParameters\n\tDescription: ƵԶɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Threshold\n\tDescription: ֵ(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);//ֵ\n\t/*************************************************\n\tFunction:    ZPHOTO_ChannelMixProcess\n\tDescription: ͨ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t channel-Red-0,Green-1,Blue-2,Gray-3\n\t\t\t\t kr-RedͨΧ[-200,200]\n\t\t\t\t kg-GreenͨΧ[-200,200]\n\t\t\t\t kb-BlueͨΧ[-200,200]\n\t\t\t\t N-ڱΧ[-200,200]\n\t\t\t\t singleColor-Ƿɫɫ-trueɫ-false\n\t\t\t\t constAdjust-Ƿִгڣ-true,-false\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastestGaussFilter\n\tDescription: ٸ˹ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);//˹˲\n\t/*************************************************\n\tFunction:    ZPHOTO_HighPass\n\tDescription: ߷\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);//߷\n\t/*************************************************\n\tFunction:    ZPHOTO_USM\n\tDescription: USM\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹뾶ΧΪ[0,1000]\n\t\t\t\t amount-񻯳̶ȣΧΪ[0,500]\n\t\t\t\t threshold-ֵΧΪ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\t/*************************************************\n\tFunction:    ZPHOTO_FindEdges\n\tDescription: ұԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);//ұԵ\n\t/////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //ͼϹ\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarken\n\tDescription: 䰵ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeMultiply\n\tDescription: Ƭģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorBurn\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearBurn\n\tDescription: Խģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarkness\n\tDescription: ɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLighten\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeScreen\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorDodge\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorLinearDodge\n\tDescription: ɫԼģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLightColor\n\tDescription: ǳɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeOverlay\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSoftLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeHardLight\n\tDescription: ǿģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeVividLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearLight\n\tDescription: Թģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModePinLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSolidColorMixing\n\tDescription: ʵɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDifference\n\tDescription: ֵģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeExclusion\n\tDescription: ųģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSubtraction\n\tDescription: ȥģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDivide\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDesaturate\n\tDescription: ȥɫ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorInvert\n\tDescription: \n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageBlendEffect\n\tDescription: ͼ\n\tInput:       baseData-ͼͼBufferʽΪ32λBGRA\n\t             width-ͼ\n\t\t\t\t height-ͼ߶\n\t\t\t\t stride-ͼStride\n\t\t\t\t mixData-ͼͼBufferСͼͼһ\n\t\t\t\t blendMode-ͼģʽ\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);\n    /////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //չ\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorTemperature\n\tDescription: ɫµ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɫǿȣΧ[-50,50]intensity < 0ɫintensity = 0,ԭͼintensity > 0ůɫ\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Shadow \n\tDescription: Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ӰǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Shadow(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Highlight\n\tDescription: ߹\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--߹ǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Highlight(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_HighlightShadowPrecise\n\tDescription: ߹Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t highlight--߹ǿֵȡֵΧΪ[-200,100]\n\t\t\t\t shadow-ӰǿֵȡֵΧΪ[-200,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\t/*************************************************\n\tFunction:    ZPHOTO_Exposure\n\tDescription: ع\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--عǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_CalcWH\n\tDescription: ͼ任֮Ŀ߼任HýӿZPHOTO_ImageTransformation       \n\tInput:\t     inputImgSize--ͼϢ\n\t\t\t\t angle--תǶֵȡֵΧΪ[-360-360]\n\t\t\t\t scale--ű任ֵȡֵ0\n\t\t\t\t transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\t\t\t\t outputImgSize--ͼϢ\n\t\t\t\t H--任飬Ϊ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageTransformation\n\tDescription: ͼ任\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             srcImgSize--ԭʼͼϢ\n                 dstData--ͼBufferСɽӿZPHOTO_CalcWH\n\t\t\t\t dstImgSize--ĿͼϢ\n\t\t\t\t H--任飬Ϊ6\n\t\t\t\t Interpolation_method--ֵѡinterpolation_bilinear,interpolation_nearest\n\t\t\t\t Transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastMeanFilter\n\tDescription: ֵģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius--ֵ˲뾶ȡֵΧΪ[0,width / 2]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_SobelFilter\n\tDescription: SobelԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\n\t//For Android Development\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBA2BGRA\n\tDescription: RGBAʽתBGRAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_BGRA2RGBA\n\tDescription: BGRAʽתRGBAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_Fragment\n\tDescription: Ƭ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_MotionBlur\n\tDescription: ˶ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-˶ģǶֵȡֵΧΪ[0,360]\n\t\t\t\t distance-˶ģֵȡֵΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\t/*************************************************\n\tFunction:    ZPHOTO_SurfaceBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ģֵֵȡֵΧΪ[0,255]\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,10]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_RadialBlur\n\tDescription: תģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ѡģX\n\t\t\t\t cenY-תģY\n\t\t\t\t amount-תģ̶ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_ZoomBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ģX\n\t\t\t\t cenY-ģY\n\t\t\t\t sampleRadius-ģ뾶ΧΪ[0-255]\n\t\t\t\t amount-ģ̶,ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Relief\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶   \n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-ǶȣΧΪ[0-360]\n\t\t\t\t amount-̶,ΧΪ[0-500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mean\n\tDescription: ƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mosaic\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-Mosaic뾶,ΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mosaic(unsigned char* srcData, int width, int height, int stride, int size);\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorBalance\n\tDescription: ɫƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cyan-ɫΧΪ[-100,100]\n\t\t\t\t magenta-죬ΧΪ[-100,100]\n\t\t\t\t yellow-ɫΧΪ[-100,100]\n\t\t\t\t channel-ͨѡRGB-0,R-1,G-2,B-3\n\t\t\t\t preserveLuminosity-true:ȣfalse:\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Diffusion\n\tDescription: ɢ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɢ̶ȣΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_LSNBlur\n\tDescription: LSNBlur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-LSNBlur뾶ΧΪ[0,200]\n\t\t\t\t delta-[0,500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\t/*************************************************\n\tFunction:    ZPHOTO_MedianFilter\n\tDescription: ֵ˲(мɫ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride,int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MaxFilter\n\tDescription: ֵ˲(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MinFilter\n\tDescription: Сֵ˲(Сֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_GlowingEdges\n\tDescription: Ե˾\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t edgeSize-ԵֵȡֵΧΪ[1,14]\n\t\t\t\t edgeLightness-ԵֵȡֵΧΪ[0,20]\n\t\t\t\t edgeSmoothness-ƽȣȡֵΧΪ[1,15]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageWarpWave\n\tDescription: Wave \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-γ̶ȣΧ[0, 100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToYCbCr\n\tDescription: RGBתYCbCr\n\tInput:       Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n\tEXPORT void ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\t/*************************************************\n\tFunction:    ZPHOTO_YCbCrToRGB\n\tDescription: YCbCrתRGB\t   \n\tInput: \t     Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToLab\n\tDescription: RGBתLAB\t   \n\tInput:    \t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\t/*************************************************\n\tFunction:    ZPHOTO_LabToRGB\n\tDescription: LABתRGB\t   \n\tInput:    \t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_GammaCorrect\n\tDescription: Gamma\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-GammaΧ[1,50]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\n    /******************************************************************************* \n    * Function Name  : Natural Saturation \n    * Description    : ȻͶ\n    * Input  srcData : image data\n    * Input  width   : image width\n    * Input  height  : image height\n    * Input  stride  : image stride\n    * Input  saturation     : saturation value to adjust from -100 to 100\n    * Output         : None \n    * Return         : 0-success, others failed\n    *******************************************************************************/\n\tEXPORT int ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tEXPORT int ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n/****************************************************Update***************************************************\n****************************************************Date:2018-06-21*******************************************\nContent:\nSmart blur filter\nAnisotropic Filter\n*************************************************************************************************************/\n/*************************************************\n\tFunction:    ZPHOTO_SmartBlurFilter\n\tDescription: Smart Blur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-ģ뾶ֵȡֵΧΪ[0,100]\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n/*************************************************\n\tFunction:    ZPHOTO_AnisotropicFilter\n\tDescription: Anisotropic Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t iter-ȡֵΧΪ[0,100]\n\t\t\t\t k-ɢϵΧ[0,]\n\t\t\t\t lambda-[0,0.35],default 0.25\n\t\t\t\t offset-[0,10],default 3\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n/*************************************************\n\tFunction:    ZPHOTO_DisplacementFilter\n\tDescription: Displacement Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t maskData-ûͼʽΪ32λBGRAʽ\n\t\t\t\t mWidth-ûͼ\n\t\t\t\t mHeight-ûͼ߶\n\t\t\t\t mStride-ûͼStride\n\t\t\t\t hRatio-ˮƽΧ[-100,100]\n\t\t\t\t vRatio-ֱΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n/*************************************************\n\tFunction:    ZPHOTO_NoiseEffect\n\tDescription: Noise effect\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ͼĻϱΧ[0,100]\n\t\t\t\t sigma-Χ[0,]\n\t\t\t\t phase-ȣΧ[0,]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\nEXPORT int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#else\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif    \n\t//\n\tint ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n    int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\tint ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);\n\tint ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);\n\tint ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);\n\tint ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);\n    int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\tint ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);\n\tint ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);\n    int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);\n    int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\n\tint ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);\n\tint ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);\n\tint ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\tint ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\tint ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\tint ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\n\t//V1.2\n\tint ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\tint ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\tint ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\tint ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\tint ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\tint ZPHOTO_Mosaic(unsigned char *srcData, int width, int height, int stride, int size);\n\tint ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\tint ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t\n\tvoid ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\tvoid ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\tvoid ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\tvoid ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t///ͼϹ\n\tint ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\tint ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\tint ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);//ͼ\n\n\t//չ\n\tint ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);\n\tint ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\tint ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n    int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\tint ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\tint ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\tint ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n    //For Android Development\n    int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n    int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\tint ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\tint ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\tint ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n\tint ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n\tint ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n\tint ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n    int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif\n\n\n\n#endif\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/PC_LIB/inc/SFBITMAP.h",
    "content": "#ifndef _IN_BITMAP_H_\n#define _IN_BITMAP_H_\n#include\"f_error.h\"\n#define SF_IMAGE_MAX_PLANES  4\n/*ͼṹBITMAP\n/*\n*pixelFormat:ظʽBGR24,BGRA32\n*lWidth:ͼ\n*lHeight:ͼ߶\n*lBitCounts:ÿλ\n*lPitch:ÿеbytes\n*pPlandData:ͼݵָ\n*/\ntypedef struct _tag_SFBITMAP{\n\tint pixelFormat;\n\tint lWidth;\n\tint lHeight;\n\tint lBitCounts;\n\tlong lPitch[SF_IMAGE_MAX_PLANES];\n\tunsigned char* pPlaneData[SF_IMAGE_MAX_PLANES];\n\t\n}SFBITMAP,*LPSFBITMAP;\n\n\n/*\n*ͼظʽ\n*/\ntypedef enum _sf_image_pixelformat{SF_IMAGE_PIXELFORMAT_YUV420,SF_IMAGE_PIXELFORMAT_BGR24,SF_IMAGE_PIXELFORMAT_BGRA32,SF_IMAGE_PIXELFORMAT_RGB24,SF_IMAGE_PIXELFORMAT_RGBA32\n}SFPixelFormat;\n/*\n*ͼʽ\n*/\ntypedef enum _sf_imageformat{SF_IMAGE_PNG,SF_IMAGE_BMP,SF_IMAGE_JPG, SF_IMAGE_GIF, SF_IMAGE_UNKNOWN}SFImageFormat;\n\n\n\n\n/*\n*ݴʽͼݣINBITMAP\n*srcData:ͼڴ\n*width:ͼ\n*height:ͼ߶\n*bitCounts:ͼ񵥸bit\n*pixelFormat:ͼظʽ\n*dstBitmapINBITMAP\n*/\nint SFBITMAP_CreateFromImage(unsigned char* srcData, int width, int height, int bitCounts, int pixelFormat,SFBITMAP* dstBitmap);\n/*\n*INBITMAPתΪָʽ䵽ָڴ\n*srcBitmap:INBITMAP\n*srcDataĿʽͼڴBuffer\n*width:Ŀͼ\n*height:Ŀͼ߶\n*bitCounts:Ŀͼ񵥸bit\n*pixelFormat:Ŀͼظʽ\n*/\nint SFBITMAP_ConvertToImage(SFBITMAP srcBitmap, unsigned char* srcData, int width, int height, int bitCounts, int pixelFormat);\n/*INBITMAP\n*bitmap:ҪͷŵINBITMAP\n*/\nvoid SFBITMAP_Free(SFBITMAP* bitmap);\n#endif\n\n\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/PC_LIB/inc/SFImageReadWrite.h",
    "content": "\n/*************************************************************************\nCopyright:   SF.\nAuthor:\t\t Hu Yaowu\nDate:\t\t 2018-6-07\nMail:        dongtingyueh@163.com\nDescription: ú\n*************************************************************************/\n#ifndef __SF_IMAGEPROCESS__\n#define __SF_IMAGEPROCESS__\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <math.h>\n#include\"SFBITMAP.h\"\n#ifdef ZPHOTOENGINEIO  \n#define ZPHOTOENGINEIO_API _declspec(dllexport)  \n#else  \n#define ZPHOTOENGINEIO_API  _declspec(dllimport)  \n#endif  \n\nclass SF_ImageReadWrite\n{\npublic:\n\tSF_ImageReadWrite();\n\t~SF_ImageReadWrite();\n\tint ReadImage(char* fileName);\n\tint SaveImage(char* fileName, int imageFormat);\n\tLPSFBITMAP sfBitmap;\n\tvoid Destroy();\nprivate:\n\tint QT_ReadPNGImage(char *pngFileName);\n\tvoid QT_GetPNGImageSize(int imgSize[]);\n\tvoid QT_GetPNGImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SavePNGImage(unsigned char* srcData, int width, int height, int stride, const char* szPngFileNameOut);\n\tvoid QT_PNGFree();\n\tint QT_ReadJPGImage(char *jpgFileName);\n\tvoid QT_GetJPGImageSize(int imgSize[]);\n\tvoid QT_GetJPGImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SaveJPGImage(unsigned char* srcData, int width, int height, int stride,const char* szJpgFileNameOut, int quality);\n\tvoid QT_JPGFree();\n\tint QT_ReadBMPImage(char *bmpFileName);\n\tvoid QT_GetBMPImageSize(int imgSize[]);\n\tvoid QT_GetBMPImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SaveBMPImage(unsigned char* srcData, int width, int height, int stride, const char* szBmpFileNameOut);\n\tvoid QT_BMPFree();\n\tint QT_GetImageFormat(char* fileName);\n\t\n\t\n};\n\n//void  CImage::LoadImage(char *fname)\n//{    \n//  m_Width = m_Height = 0;\n//     \n//  ifstream ffin(fname, std::ios::binary);\n//     \n//  if (!ffin){\n//    cout<<\"Can not open this file.\"<<endl;\n//    return;\n//  }  \n//  int result = get_extension(fname);\n//  char s1[2] = {0}, s2[2] = {0};\n//   \n//  switch(result)\n//  {\n//  case 1:  // gif  \n//    ffin.seekg(6);     \n//    ffin.read(s1, 2);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 2:  // jpg\n//    ffin.seekg(164);    \n//    ffin.read(s1, 2);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 3:   // png\n//    ffin.seekg(17);    \n//    ffin.read(s1, 2);\n//    ffin.seekg(2, std::ios::cur);\n//    ffin.read(s2, 2);   \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 4:   // bmp    \n//    ffin.seekg(18);    \n//    ffin.read(s1, 2);\n//    ffin.seekg(2, std::ios::cur);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  default:\n//    cout<<\"NO\"<<endl;\n//    break;\n//  }  \n//  ffin.close();\n//};\n\n#endif"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/PC_LIB/inc/f_error.h",
    "content": "#ifndef  __SF_EFFOR__\n#define  __SF_EFFOR__\n\nstatic int SF_SUCCESS = 0;\nstatic int SF_FORMAT_ERROR = -2;\nstatic int SF_FILE_ERROR = -1;\nstatic int SF_OTHER_ERROR = -5;\nstatic int SF_PARAMS_ERROR = -3;\nstatic int SF_MEMORY_ERROR = -4;\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include <limits.h>\n#include <float.h>\n#include <time.h>\n#include <string.h>\n#include <assert.h>\n\n\n\ntypedef enum _sf_ret {\n\tSF_RET_OK,\n\tSF_RET_ERR_PARA,\n\tSF_RET_ERR_MEM,\n\tSF_RET_ERR_NOT_SUPPORT      = 0x04,\n\tSF_RET_ERR_OPEN_FILE        = 0x08,\n\tSF_RET_ERR_DATA_UNINITED    = 0x10,\n\tSF_RET_ERR_UNKNOWN          = 0x20,\n\tSF_RET_ERR_END_OF_FILE      = 0x40,\n\tSF_RET_ERR_DATA_UNREADABLE  = 0x101,\n\tSF_RET_ERR_DATA_NOWRITEABLE = 0x102,\n\n}SF_RET;\n\n#define SF_PRINT_LOG(message)  printf(\"Error occurred: %s \\nError position:\\nFile:%s \\nLine:%d\\n\", message, __FILE__, __LINE__);\n\nstatic const char* sf_error_string[] = {\n\t\"Good! Normal return!\",\n\t\"Your input params are wrong!\",\n\t\"Allocating memory failure! \",\n\t\"Current version can not support!\",\n\t\"Opening file errors!\",\n\t\"Data are uninitialized!\",\n\t\"Unknown error!\",\n\t\"Arriving the end of the file!\",\n\t\"Data are waiting!\",\n\t\"Data length is not enough!\"\n};\n\n#define SF_LOG(level)                                  \\\n\t{                                                  \\\n\tif (level == SF_RET_ERR_PARA){                     \\\n\t     SF_PRINT_LOG(sf_error_string[1]);             \\\n\t} else if (level == SF_RET_ERR_MEM){               \\\n\t     SF_PRINT_LOG(sf_error_string[2]);             \\\n\t} else if (level == SF_RET_ERR_NOT_SUPPORT){       \\\n\t     SF_PRINT_LOG(sf_error_string[3]);             \\\n\t} else if (level == SF_RET_ERR_OPEN_FILE){         \\\n\t     SF_PRINT_LOG(sf_error_string[4]);             \\\n\t} else if (level == SF_RET_ERR_DATA_UNINITED){     \\\n\t     SF_PRINT_LOG(sf_error_string[5]);             \\\n\t} else if (level == SF_RET_ERR_UNKNOWN){           \\\n\t     SF_PRINT_LOG(sf_error_string[6]);             \\\n\t} else if (level == SF_RET_ERR_END_OF_FILE){       \\\n\t     SF_PRINT_LOG(sf_error_string[7]);             \\\n\t} else if (level == SF_RET_ERR_DATA_UNREADABLE){   \\\n\t     SF_PRINT_LOG(sf_error_string[8]);             \\\n\t} else if (level == SF_RET_ERR_DATA_NOWRITEABLE){  \\\n\t     SF_PRINT_LOG(sf_error_string[9]);             \\\n\t}                                                  \\\n\t}\n#endif"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/SFBITMAP.h",
    "content": "#ifndef _IN_BITMAP_H_\n#define _IN_BITMAP_H_\n#include\"f_error.h\"\n#define SF_IMAGE_MAX_PLANES  4\n/*ͼṹBITMAP\n/*\n*pixelFormat:ظʽBGR24,BGRA32\n*lWidth:ͼ\n*lHeight:ͼ߶\n*lBitCounts:ÿλ\n*lPitch:ÿеbytes\n*pPlandData:ͼݵָ\n*/\ntypedef struct _tag_SFBITMAP{\n\tint pixelFormat;\n\tint lWidth;\n\tint lHeight;\n\tint lBitCounts;\n\tlong lPitch[SF_IMAGE_MAX_PLANES];\n\tunsigned char* pPlaneData[SF_IMAGE_MAX_PLANES];\n\t\n}SFBITMAP,*LPSFBITMAP;\n\n\n/*\n*ͼظʽ\n*/\ntypedef enum _sf_image_pixelformat{SF_IMAGE_PIXELFORMAT_YUV420,SF_IMAGE_PIXELFORMAT_BGR24,SF_IMAGE_PIXELFORMAT_BGRA32,SF_IMAGE_PIXELFORMAT_RGB24,SF_IMAGE_PIXELFORMAT_RGBA32\n}SFPixelFormat;\n/*\n*ͼʽ\n*/\ntypedef enum _sf_imageformat{SF_IMAGE_PNG,SF_IMAGE_BMP,SF_IMAGE_JPG, SF_IMAGE_GIF, SF_IMAGE_UNKNOWN}SFImageFormat;\n\n\n\n\n/*\n*ݴʽͼݣINBITMAP\n*srcData:ͼڴ\n*width:ͼ\n*height:ͼ߶\n*bitCounts:ͼ񵥸bit\n*pixelFormat:ͼظʽ\n*dstBitmapINBITMAP\n*/\nint SFBITMAP_CreateFromImage(unsigned char* srcData, int width, int height, int bitCounts, int pixelFormat,SFBITMAP* dstBitmap);\n/*\n*INBITMAPתΪָʽ䵽ָڴ\n*srcBitmap:INBITMAP\n*srcDataĿʽͼڴBuffer\n*width:Ŀͼ\n*height:Ŀͼ߶\n*bitCounts:Ŀͼ񵥸bit\n*pixelFormat:Ŀͼظʽ\n*/\nint SFBITMAP_ConvertToImage(SFBITMAP srcBitmap, unsigned char* srcData, int width, int height, int bitCounts, int pixelFormat);\n/*INBITMAP\n*bitmap:ҪͷŵINBITMAP\n*/\nvoid SFBITMAP_Free(SFBITMAP* bitmap);\n#endif\n\n\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/SFImageReadWrite.h",
    "content": "\n/*************************************************************************\nCopyright:   SF.\nAuthor:\t\t Hu Yaowu\nDate:\t\t 2017-6-07\nMail:        dongtingyueh@163.com\nDescription: ú\n*************************************************************************/\n#ifndef __SF_IMAGEPROCESS__\n#define __SF_IMAGEPROCESS__\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <math.h>\n#include\"SFBITMAP.h\"\n#ifdef ZPHOTOENGINEIO  \n#define ZPHOTOENGINEIO_API _declspec(dllexport)  \n#else  \n#define ZPHOTOENGINEIO_API  _declspec(dllimport)  \n#endif  \n\nclass SF_ImageReadWrite\n{\npublic:\n\tSF_ImageReadWrite();\n\t~SF_ImageReadWrite();\n\tint ReadImage(char* fileName);\n\tint SaveImage(char* fileName, int imageFormat);\n\tLPSFBITMAP sfBitmap;\n\tvoid Destroy();\nprivate:\n\tint QT_ReadPNGImage(char *pngFileName);\n\tvoid QT_GetPNGImageSize(int imgSize[]);\n\tvoid QT_GetPNGImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SavePNGImage(unsigned char* srcData, int width, int height, int stride, const char* szPngFileNameOut);\n\tvoid QT_PNGFree();\n\tint QT_ReadJPGImage(char *jpgFileName);\n\tvoid QT_GetJPGImageSize(int imgSize[]);\n\tvoid QT_GetJPGImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SaveJPGImage(unsigned char* srcData, int width, int height, int stride,const char* szJpgFileNameOut, int quality);\n\tvoid QT_JPGFree();\n\tint QT_ReadBMPImage(char *bmpFileName);\n\tvoid QT_GetBMPImageSize(int imgSize[]);\n\tvoid QT_GetBMPImageData(unsigned char* imgData, int width, int height, int stride);\n\tint QT_SaveBMPImage(unsigned char* srcData, int width, int height, int stride, const char* szBmpFileNameOut);\n\tvoid QT_BMPFree();\n\tint QT_GetImageFormat(char* fileName);\n\t\n\t\n};\n\n//void  CImage::LoadImage(char *fname)\n//{    \n//  m_Width = m_Height = 0;\n//     \n//  ifstream ffin(fname, std::ios::binary);\n//     \n//  if (!ffin){\n//    cout<<\"Can not open this file.\"<<endl;\n//    return;\n//  }  \n//  int result = get_extension(fname);\n//  char s1[2] = {0}, s2[2] = {0};\n//   \n//  switch(result)\n//  {\n//  case 1:  // gif  \n//    ffin.seekg(6);     \n//    ffin.read(s1, 2);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 2:  // jpg\n//    ffin.seekg(164);    \n//    ffin.read(s1, 2);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 3:   // png\n//    ffin.seekg(17);    \n//    ffin.read(s1, 2);\n//    ffin.seekg(2, std::ios::cur);\n//    ffin.read(s2, 2);   \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  case 4:   // bmp    \n//    ffin.seekg(18);    \n//    ffin.read(s1, 2);\n//    ffin.seekg(2, std::ios::cur);\n//    ffin.read(s2, 2);    \n//    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);\n//    m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  \n//    break;\n//  default:\n//    cout<<\"NO\"<<endl;\n//    break;\n//  }  \n//  ffin.close();\n//};\n\n#endif"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/ZPhotoIODEMO.vcxproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|Win32\">\n      <Configuration>Debug</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|Win32\">\n      <Configuration>Release</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n  <PropertyGroup Label=\"Globals\">\n    <ProjectGuid>{EBA08A16-113E-4326-AA10-FA9C30338ED9}</ProjectGuid>\n    <Keyword>Win32Proj</Keyword>\n    <RootNamespace>ZPhotoIODEMO</RootNamespace>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <ImportGroup Label=\"ExtensionSettings\">\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <LinkIncremental>false</LinkIncremental>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <LinkIncremental>false</LinkIncremental>\n  </PropertyGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <ClCompile>\n      <PrecompiledHeader>NotUsing</PrecompiledHeader>\n      <WarningLevel>Level3</WarningLevel>\n      <Optimization>Disabled</Optimization>\n      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ClCompile>\n    <Link>\n      <SubSystem>Console</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <Optimization>MaxSpeed</Optimization>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ClCompile>\n    <Link>\n      <SubSystem>Console</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemGroup>\n    <ClCompile Include=\"main.cpp\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"f_error.h\" />\n    <ClInclude Include=\"SFBITMAP.h\" />\n    <ClInclude Include=\"SFImageReadWrite.h\" />\n    <ClInclude Include=\"stdafx.h\" />\n    <ClInclude Include=\"targetver.h\" />\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n  <ImportGroup Label=\"ExtensionTargets\">\n  </ImportGroup>\n</Project>"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/ZPhotoIODEMO.vcxproj.filters",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup>\n    <Filter Include=\"Source Files\">\n      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\n      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\n    </Filter>\n    <Filter Include=\"Header Files\">\n      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\n      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\n    </Filter>\n    <Filter Include=\"Resource Files\">\n      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\n      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\n    </Filter>\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"main.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"f_error.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"SFBITMAP.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"SFImageReadWrite.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"stdafx.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"targetver.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/ZPhotoIODEMO.vcxproj.user",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n</Project>"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/f_error.h",
    "content": "#ifndef  __SF_EFFOR__\n#define  __SF_EFFOR__\n\nstatic int SF_SUCCESS = 0;\nstatic int SF_FORMAT_ERROR = -2;\nstatic int SF_FILE_ERROR = -1;\nstatic int SF_OTHER_ERROR = -5;\nstatic int SF_PARAMS_ERROR = -3;\nstatic int SF_MEMORY_ERROR = -4;\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include <limits.h>\n#include <float.h>\n#include <time.h>\n#include <string.h>\n#include <assert.h>\n\n\n\ntypedef enum _sf_ret {\n\tSF_RET_OK,\n\tSF_RET_ERR_PARA,\n\tSF_RET_ERR_MEM,\n\tSF_RET_ERR_NOT_SUPPORT      = 0x04,\n\tSF_RET_ERR_OPEN_FILE        = 0x08,\n\tSF_RET_ERR_DATA_UNINITED    = 0x10,\n\tSF_RET_ERR_UNKNOWN          = 0x20,\n\tSF_RET_ERR_END_OF_FILE      = 0x40,\n\tSF_RET_ERR_DATA_UNREADABLE  = 0x101,\n\tSF_RET_ERR_DATA_NOWRITEABLE = 0x102,\n\n}SF_RET;\n\n#define SF_PRINT_LOG(message)  printf(\"Error occurred: %s \\nError position:\\nFile:%s \\nLine:%d\\n\", message, __FILE__, __LINE__);\n\nstatic const char* sf_error_string[] = {\n\t\"Good! Normal return!\",\n\t\"Your input params are wrong!\",\n\t\"Allocating memory failure! \",\n\t\"Current version can not support!\",\n\t\"Opening file errors!\",\n\t\"Data are uninitialized!\",\n\t\"Unknown error!\",\n\t\"Arriving the end of the file!\",\n\t\"Data are waiting!\",\n\t\"Data length is not enough!\"\n};\n\n#define SF_LOG(level)                                  \\\n\t{                                                  \\\n\tif (level == SF_RET_ERR_PARA){                     \\\n\t     SF_PRINT_LOG(sf_error_string[1]);             \\\n\t} else if (level == SF_RET_ERR_MEM){               \\\n\t     SF_PRINT_LOG(sf_error_string[2]);             \\\n\t} else if (level == SF_RET_ERR_NOT_SUPPORT){       \\\n\t     SF_PRINT_LOG(sf_error_string[3]);             \\\n\t} else if (level == SF_RET_ERR_OPEN_FILE){         \\\n\t     SF_PRINT_LOG(sf_error_string[4]);             \\\n\t} else if (level == SF_RET_ERR_DATA_UNINITED){     \\\n\t     SF_PRINT_LOG(sf_error_string[5]);             \\\n\t} else if (level == SF_RET_ERR_UNKNOWN){           \\\n\t     SF_PRINT_LOG(sf_error_string[6]);             \\\n\t} else if (level == SF_RET_ERR_END_OF_FILE){       \\\n\t     SF_PRINT_LOG(sf_error_string[7]);             \\\n\t} else if (level == SF_RET_ERR_DATA_UNREADABLE){   \\\n\t     SF_PRINT_LOG(sf_error_string[8]);             \\\n\t} else if (level == SF_RET_ERR_DATA_NOWRITEABLE){  \\\n\t     SF_PRINT_LOG(sf_error_string[9]);             \\\n\t}                                                  \\\n\t}\n#endif"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/main.cpp",
    "content": "#include \"stdafx.h\"\n#include\"f_error.h\"\n#include\"SFBITMAP.h\"\n#include\"SFImageReadWrite.h\"\n#pragma  comment(lib,\"ZPhotoEngineIO.lib\")\n\nint _tmain(int argc, char* argv[])\n{\n\tchar* jpgPath = \"C:\\\\Users\\\\Administrator\\\\Desktop\\\\1.jpg\";\n\tchar* outjpgPath = \"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Res.jpg\";\n\tlong start = clock();\n\tSF_ImageReadWrite* imgRW = new SF_ImageReadWrite();\n\tint ret = imgRW->ReadImage(jpgPath);\n\tif(ret == SF_RET_OK)\n\t{\n\t\tunsigned char* pSrc = imgRW->sfBitmap->pPlaneData[0];\n\t\tint w = imgRW->sfBitmap->lWidth;\n\t\tint h = imgRW->sfBitmap->lHeight;\n\t\tunsigned char* tempData = (unsigned char*)malloc(sizeof(unsigned char) * w * h * 4);\n\t\tmemcpy(tempData, pSrc, sizeof(unsigned char) * w * h * 4);\n\t\t//Image Processing\n\t\t\n\t\timgRW->SaveImage(outjpgPath,SF_IMAGE_JPG);\n\t}\n\tlong end = clock();\n\timgRW->Destroy();\n\tprintf(\"JPG Time cost: %d ms.\", (end - start));\n    return 0;\n}"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/stdafx.cpp",
    "content": "// stdafx.cpp : source file that includes just the standard includes\n// ImageReadDemo.pch will be the pre-compiled header\n// stdafx.obj will contain the pre-compiled type information\n\n#include \"stdafx.h\"\n\n// TODO: reference any additional headers you need in STDAFX.H\n// and not in this file\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/stdafx.h",
    "content": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequently, but\n// are changed infrequently\n//\n\n#pragma once\n\n#include \"targetver.h\"\n\n#include <stdio.h>\n#include <tchar.h>\n\n\n\n// TODO: reference additional headers your program requires here\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO/targetver.h",
    "content": "#pragma once\n\n// Including SDKDDKVer.h defines the highest available Windows platform.\n\n// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and\n// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.\n\n#include <SDKDDKVer.h>\n"
  },
  {
    "path": "ZPHOTOENGINE/ZPhotoEngine_IO/ZPhotoIODEMO/ZPhotoIODEMO.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 11.00\n# Visual Studio 2010\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"ZPhotoIODEMO\", \"ZPhotoIODEMO\\ZPhotoIODEMO.vcxproj\", \"{EBA08A16-113E-4326-AA10-FA9C30338ED9}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Win32 = Debug|Win32\n\t\tRelease|Win32 = Release|Win32\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{EBA08A16-113E-4326-AA10-FA9C30338ED9}.Debug|Win32.ActiveCfg = Debug|Win32\n\t\t{EBA08A16-113E-4326-AA10-FA9C30338ED9}.Debug|Win32.Build.0 = Debug|Win32\n\t\t{EBA08A16-113E-4326-AA10-FA9C30338ED9}.Release|Win32.ActiveCfg = Release|Win32\n\t\t{EBA08A16-113E-4326-AA10-FA9C30338ED9}.Release|Win32.Build.0 = Release|Win32\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ZPHOTOENGINE/android/ReadMe.txt",
    "content": "ʹ÷\n1ZphotoEngine.soŵandroid projectlibsĿ¼\n2ZPHOTOŵsrcĿ¼£"
  },
  {
    "path": "ZPHOTOENGINE/android/ZPHOTO/PhotoEngine.java",
    "content": "package ZPHOTO;\n\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.InputStream;\n\nimport android.content.res.AssetManager;\nimport android.graphics.Bitmap;\nimport android.util.Log;\n\npublic class PhotoEngine {\n\tstatic {\n\t      System.loadLibrary(\"photoengine\");\n\t      Log.d(\"loadlibrary\",\"load photoengine done!\");\n\t  }\n\t\tprivate static String LOG_TAG = \"ZPhotoEngine\";\n\t    public static AssetManager assetMgr = null;\n\t\t\n\t\tpublic static void initLib(AssetManager am) {\n\t\t\tassetMgr = am;\n\t\t}\n\t\t\n\t\tpublic static InputStream open_file_binary(String filepath) {\n\t\t\tInputStream stream = null;\n\n\t\t\ttry {\n\t\t\t\tif (filepath == null)\n\t\t\t\t\treturn null;\n\t\t\t\t\n\t\t\t\tstream = assetMgr.open(filepath);\n\t\t\t\tif (stream == null)\n\t\t\t\t\treturn null;\n\t\t\t\t\n\t\t\t\tint len = stream.available();\n\t\t\t\tif (!stream.markSupported())\n\t\t\t\t\tLog.d(LOG_TAG, \"markSupported = flase\");\n\t\t\t\tstream.mark(len);\n\t\t\t} catch (IOException e) {\n\t\t\t\tLog.e(LOG_TAG, e.getMessage());\n\t\t\t\t\n\t\t\t\tif (e instanceof FileNotFoundException) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstream = new FileInputStream(filepath);\n\t\t\t\t\t\t\n\t\t\t\t\t\tint len = stream.available();\n\t\t\t\t\t\tif (!stream.markSupported())\n\t\t\t\t\t\t\tLog.d(LOG_TAG, \"markSupported = flase\");\n\t\t\t\t\t\tstream.mark(len);\n\t\t\t\t\t} catch (Exception e2) {\n\t\t\t\t\t\tLog.e(LOG_TAG, e2.getMessage());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stream;\n\t\t}\n\t\t\n////////////////////////PHOTO ENGINE LIBRARY//////////////////////////\npublic native static int native_ZPHOTO_Saturation(Bitmap bitmap, int saturation);\npublic native static int native_ZPHOTO_Lightness(Bitmap bitmap, int lightness);\npublic native static int native_ZPHOTO_Invert(Bitmap bitmap);\npublic native static int native_ZPHOTO_HueAndSaturation(Bitmap bitmap, int hue, int saturation);\npublic native static int native_ZPHOTO_LinearBrightContrast(Bitmap bitmap, int bright, int contrast, int threshold);\npublic native static int native_ZPHOTO_NLinearBrightContrast(Bitmap bitmap, int bright, int contrast, int threshold);\npublic native static int  native_ZPHOTO_Blackwhite(Bitmap bitmap, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\npublic native static int  native_ZPHOTO_Threshold(Bitmap bitmap, int threshold);\npublic native static int  native_ZPHOTO_ChannelMixProcess(Bitmap bitmap, int channel, int kr, int kg, int kb, int N, boolean singleColor, boolean constAdjust);\npublic native static int  native_ZPHOTO_FastestGaussFilter(Bitmap bitmap, float radius);\npublic native static int  native_ZPHOTO_HighPass(Bitmap bitmap, float radius);\npublic native static int  native_ZPHOTO_USM(Bitmap bitmap, float radius, int amount, int threshold);\npublic native static int  native_ZPHOTO_FindEdges(Bitmap bitmap);\npublic native static int  native_ZPHOTO_ImageBlendEffect(Bitmap basebitmap, Bitmap mixBitmap, int blendMode);\npublic native static int  native_ZPHOTO_ColorTemperature(Bitmap bitmap, int intensity);\npublic native static int native_ZPHOTO_HighlightShadowPrecise(Bitmap bitmap, float highlight, float shadow);\npublic native static int  native_ZPHOTO_Exposure(Bitmap bitmap, int intensity);\npublic native static int native_XIUSDK_GammaCorrect(Bitmap bitmap, int intensity);\npublic native static int native_ZPHOTO_CalcWH(int[] inputImgSize, float angle, float scale, int transform_method, int[] outputImgSize,float[] H);\npublic native static int native_ZPHOTO_ImageTransformation(Bitmap bitmap,Bitmap dstbitmap, float[] H, int Interpolation_method, int Transform_method);\npublic native static int native_ZPHOTO_FastMeanFilter(Bitmap bitmap, int radius);\npublic native static int native_ZPHOTO_SobelFilter(Bitmap bitmap);\npublic native static int native_ZPHOTO_Posterize(Bitmap bitmap, int clusterNum);\npublic native static int native_ZPHOTO_Fragment(Bitmap bitmap);\npublic native static int native_ZPHOTO_MotionBlur(Bitmap bitmap, int angle, int distance);\npublic native static int native_ZPHOTO_SurfaceBlur(Bitmap bitmap, int threshold, int radius);\npublic native static int native_ZPHOTO_RadialBlur(Bitmap bitmap, int cenX, int cenY, int amount);\npublic native static int native_ZPHOTO_ZoomBlur(Bitmap bitmap, int cenX, int cenY, int sampleRadius, int amount);\npublic native static int native_ZPHOTO_Relief(Bitmap bitmap, int angle, int amount);\npublic native static int native_ZPHOTO_Mean(Bitmap bitmap);\npublic native static int native_ZPHOTO_Mosaic(Bitmap bitmap, int size);\npublic native static int native_ZPHOTO_OverExposure(Bitmap bitmap);\npublic native static int native_ZPHOTO_HistagramEqualize(Bitmap bitmap);\npublic native static int native_ZPHOTO_Desaturate(Bitmap bitmap, int ratio);\npublic native static int native_ZPHOTO_Curve(Bitmap bitmap, int destChannel, int[] knotsPos);\npublic native static int native_ZPHOTO_AutoContrast(Bitmap bitmap);\npublic native static int native_ZPHOTO_AutoContrastAdjustWithParameters(Bitmap bitmap,float shadowCorrectRatio, float highlightCorrectRatio);\npublic native static int native_ZPHOTO_AutoColorGradation(Bitmap bitmap);\npublic native static int native_ZPHOTO_AutoColorGradationAdjustWithParameters(Bitmap bitmap, float shadowCorrectRatio, float highlightCorrectRatio);\npublic native static int native_ZPHOTO_Diffusion(Bitmap bitmap, int intensity);\npublic native static int native_ZPHOTO_LSNBlur(Bitmap bitmap, int radius, int delta);\npublic native static int native_ZPHOTO_MedianFilter(Bitmap bitmap, int radius);\npublic native static int native_ZPHOTO_MaxFilter(Bitmap bitmap, int radius);\npublic native static int native_ZPHOTO_MinFilter(Bitmap bitmap, int radius);\npublic native static int native_ZPHOTO_GlowingEdges(Bitmap bitmap, int edgeSize, int edgeLightness, int edgeSmoothness);\npublic native static int native_ZPHOTO_ImageWarpWave(Bitmap bitmap, int intensity);\npublic native static int native_ZPHOTO_GammaCorrect(Bitmap bitmap, int intensity);\npublic native static int native_ZPHOTO_NaturalSaturation(Bitmap bitmap, int saturation);\npublic native static int native_ZPHOTO_ColorBalance(Bitmap bitmap, int cyan, int magenta, int yellow, int channel, boolean preserveLuminosity);\npublic native static int native_ZPHOTO_ColorLevel(Bitmap bitmap, int destChannel, byte inputLeftLimit, float inputMiddle, byte inputRightLimit, byte outputLeftLimit , byte outputRightLimit);\npublic native static int native_ZPHOTO_LUTFilter(Bitmap bitmap,Bitmap dstbitmap, int ratio);\npublic native static int native_ZPHOTO_SmartBlurFilter(Bitmap bitmap, int size, int threshold);\npublic native static int native_ZPHOTO_AnisotropicFilter(Bitmap bitmap, int iter, float k, float lambda, int offset);\npublic native static int native_ZPHOTO_DisplacementFilter(Bitmap bitmap,Bitmap maskBitmap, int hRatio, int vRatio);\npublic native static int  native_ZPHOTO_NoiseEffect(Bitmap bitmap, int ratio, float sigma, float phase);\n}"
  },
  {
    "path": "ZPhotoEngine.h",
    "content": "/*****************************************************************************\nCopyright:    Trent\nFile name:    ZPhotoEngine.h\nDescription:  ZPHOTO ENGINE LIBRARY FOR IMAGE PROCESSING LIKE PS\nAuthor:       Trent\nVersion:      V3.6\nDate:         2017-08-17\nMail:         dongtingyueh@163.com\n*****************************************************************************/\n\n#ifndef __T_PHOTOENGINE__\n#define __T_PHOTOENGINE__\n\n//////////////////////////////////////////////////////////////////////////////\n//ͼģʽ\nconst int BLEND_MODE_DARKEN                                       =  1;\nconst int BLEND_MODE_MULTIPLY                                     =  2;\nconst int BLEND_MODE_COLORBURN                                    =  3;\nconst int BLEND_MODE_LINEARBURN                                   =  4;\nconst int BLEND_MODE_DARKNESS                                     =  5;\nconst int BLEND_MODE_LIGHTEN                                      =  6;\nconst int BLEND_MODE_SCREEN                                       =  7;\nconst int BLEND_MODE_COLORDODGE                                   =  8;\nconst int BLEND_MODE_COLORLINEARDODGE                             =  9;\nconst int BLEND_MODE_LIGHTCOLOR                                   =  10;\nconst int BLEND_MODE_OVERLAY                                      =  11;\nconst int BLEND_MODE_SOFTLIGHT                                    =  12;\nconst int BLEND_MODE_HARDLIGHT                                    =  13;\nconst int BLEND_MODE_VIVIDLIGHT                                   =  14;\nconst int BLEND_MODE_LINEARLIGHT                                  =  15;\nconst int BLEND_MODE_PINLIGHT                                     =  16;\nconst int BLEND_MODE_SOLIDCOLORMIXING                             =  17;\nconst int BLEND_MODE_DIFFERENCE                                   =  18;\nconst int BLEND_MODE_EXCLUSION                                    =  19;\nconst int BLEND_MODE_SUBTRACTION                                  =  20;\nconst int BLEND_MODE_DIVIDE                                       =  21;\n///////////////////////////////////////////////////////////////////////////////\n#ifdef _MSC_VER\n\n#ifdef __cplusplus\n#define EXPORT extern \"C\" _declspec(dllexport)\n#else\n#define EXPORT __declspec(dllexport)\n#endif\n\n    //\n\t/*************************************************\n\tFunction:    ZPHOTO_Saturation\n\tDescription: Ͷȵ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t saturation-ͶֵΧ[0,512]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\t/*************************************************\n\tFunction:    ZPHOTO_Posterize\n\tDescription: ɫ.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t clusterNum-ɫΧ[2,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\t/*************************************************\n\tFunction:    ZPHOTO_OverExposure\n\tDescription: ع.\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);//ع\n\t/*************************************************\n\tFunction:    ZPHOTO_Lightness    \n\tDescription: ȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t lightness-ֵΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);//ȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Invert\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);//\n\t/*************************************************\n\tFunction:    ZPHOTO_HueAndSaturation\n\tDescription: ɫ౥Ͷȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t hue-ɫֵΧ[-180,180]\n\t\t\t\t saturation-ͶֵΧΪ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);//ɫ౥Ͷȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_HistagramEqualize\n\tDescription: ɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);//ɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Desaturate\n\tDescription: ȥɫ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ȥɫ̶ȣ[0-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);//ȥɫ\n   /*************************************************\n\tFunction:    ZPHOTO_Curve\n\tDescription: ߵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t knotsPos-XY飺ʼ+м+ĩβ㣬һspline\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_CurveLevel\n\tDescription: ɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t destChannel-ͨѡGrayͨ-0Rͨ-1Gͨ-2Bͨ-3\n\t\t\t\t inputLeftLimit-СֵΧ[0,255]\n\t\t\t\t inputMiddle-мֵΧ[0,9.99]\n\t\t\t\t inputRightLimit-ֵΧ[0,255]\n\t\t\t\t outputLeftLimit-СֵΧ[0,255]\n\t\t\t\t outputRightLimit-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);//ɫ׵\n\t/*************************************************\n\tFunction:    ZPHOTO_NLinearBrightContrastAdjust\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-255,255]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_LinearBrightContrast\n\tDescription: ȶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t brightness-ֵΧ[-100,100]\n\t\t\t\t contrast-ԱȶֵΧ[-100,100]\n\t\t\t\t threshold-ֵΧ[0,255]ĬֵΪ128\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);//ȶԱȶȵ\n\t/*************************************************\n\tFunction:    ZPHOTO_Blackwhite\n\tDescription: ڰ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t kRed-ɫ,Χ[-200,300]\n\t\t\t\t kGreen-ɫ,Χ[-200,300]\n\t\t\t\t kBlue-ɫ,Χ[-200,300]\n\t\t\t\t kYellow-ɫ,Χ[-200,300]\n\t\t\t\t kCyan-ɫ,Χ[-200,300]\n\t\t\t\t kMagenta-,Χ[-200,300]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);//ڰ\n\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrast\n\tDescription: ԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoContrastAdjustWithParameters\n\tDescription: ƵԶԱȶȵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//ԶԱȶ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradation\n\tDescription: Զɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_AutoColorGradationAdjustWithParameters\n\tDescription: ƵԶɫ׵\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t shadowCorrectRatio-Ӱ޼Χ[0.00,9.99]\n\t\t\t\t highlightCorrectRatio-߹޼Χ[0.00,9.99]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);//Զɫ\n\t/*************************************************\n\tFunction:    ZPHOTO_Threshold\n\tDescription: ֵ(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);//ֵ\n\t/*************************************************\n\tFunction:    ZPHOTO_ChannelMixProcess\n\tDescription: ͨ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t channel-Red-0,Green-1,Blue-2,Gray-3\n\t\t\t\t kr-RedͨΧ[-200,200]\n\t\t\t\t kg-GreenͨΧ[-200,200]\n\t\t\t\t kb-BlueͨΧ[-200,200]\n\t\t\t\t N-ڱΧ[-200,200]\n\t\t\t\t singleColor-Ƿɫɫ-trueɫ-false\n\t\t\t\t constAdjust-Ƿִгڣ-true,-false\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastestGaussFilter\n\tDescription: ٸ˹ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);//˹˲\n\t/*************************************************\n\tFunction:    ZPHOTO_HighPass\n\tDescription: ߷\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹ģ뾶Χ[0,1000]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);//߷\n\t/*************************************************\n\tFunction:    ZPHOTO_USM\n\tDescription: USM\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-˹뾶ΧΪ[0,1000]\n\t\t\t\t amount-񻯳̶ȣΧΪ[0,500]\n\t\t\t\t threshold-ֵΧΪ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\t/*************************************************\n\tFunction:    ZPHOTO_FindEdges\n\tDescription: ұԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);//ұԵ\n\t/////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //ͼϹ\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarken\n\tDescription: 䰵ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeMultiply\n\tDescription: Ƭģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorBurn\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearBurn\n\tDescription: Խģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDarkness\n\tDescription: ɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLighten\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeScreen\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorDodge\n\tDescription: ɫģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorLinearDodge\n\tDescription: ɫԼģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLightColor\n\tDescription: ǳɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeOverlay\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSoftLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeHardLight\n\tDescription: ǿģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeVividLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeLinearLight\n\tDescription: Թģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModePinLight\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSolidColorMixing\n\tDescription: ʵɫģʽ\n\tInput:       baseRed-RֵΧ[0,255]ִкΪ\n\t\t\t\t baseGreen-GֵΧ[0,255]ִкΪ\n\t\t\t\t baseBlue-BֵΧ[0,255]ִкΪ\n\t\t\t\t mixRed-RֵΧ[0,255]\n\t\t\t\t mixRed-GֵΧ[0,255]\n\t\t\t\t mixRed-BֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDifference\n\tDescription: ֵģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeExclusion\n\tDescription: ųģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeSubtraction\n\tDescription: ȥģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDivide\n\tDescription: ģʽ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeDesaturate\n\tDescription: ȥɫ\n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ModeColorInvert\n\tDescription: \n\tInput:       basePixel-ֵΧ[0,255]\n\t             mixPixel-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      ͼϽֵΧ[0,255].\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageBlendEffect\n\tDescription: ͼ\n\tInput:       baseData-ͼͼBufferʽΪ32λBGRA\n\t             width-ͼ\n\t\t\t\t height-ͼ߶\n\t\t\t\t stride-ͼStride\n\t\t\t\t mixData-ͼͼBufferСͼͼһ\n\t\t\t\t blendMode-ͼģʽ\n\tOutput:      .\n\tReturn:      0-ɹʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);\n    /////////////////////////////////////////////////////////////////////////////////////////////////////\n    \n    //չ\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorTemperature\n\tDescription: ɫµ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɫǿȣΧ[-50,50]intensity < 0ɫintensity = 0,ԭͼintensity > 0ůɫ\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Shadow \n\tDescription: Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ӰǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Shadow(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Highlight\n\tDescription: ߹\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--߹ǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Highlight(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_HighlightShadowPrecise\n\tDescription: ߹Ӱ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t highlight--߹ǿֵȡֵΧΪ[-200,100]\n\t\t\t\t shadow-ӰǿֵȡֵΧΪ[-200,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\t/*************************************************\n\tFunction:    ZPHOTO_Exposure\n\tDescription: ع\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity--عǿֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_CalcWH\n\tDescription: ͼ任֮Ŀ߼任HýӿZPHOTO_ImageTransformation       \n\tInput:\t     inputImgSize--ͼϢ\n\t\t\t\t angle--תǶֵȡֵΧΪ[-360-360]\n\t\t\t\t scale--ű任ֵȡֵ0\n\t\t\t\t transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\t\t\t\t outputImgSize--ͼϢ\n\t\t\t\t H--任飬Ϊ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageTransformation\n\tDescription: ͼ任\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             srcImgSize--ԭʼͼϢ\n                 dstData--ͼBufferСɽӿZPHOTO_CalcWH\n\t\t\t\t dstImgSize--ĿͼϢ\n\t\t\t\t H--任飬Ϊ6\n\t\t\t\t Interpolation_method--ֵѡinterpolation_bilinear,interpolation_nearest\n\t\t\t\t Transform_method--任\n\t\t\t\t\t\t\t\t\t transform_scaleű任, ȡֵΪ0\n\t\t\t\t\t\t\t\t\t transform_rotationת任, ȡֵΪ1   \n\t\t\t\t\t\t\t\t\t transform_rotation_scaleת任, ȡֵΪ2\n\t\t\t\t\t\t\t\t\t transform_affine任, ȡֵΪ3\n\t\t\t\t\t\t\t\t\t transform_mirror_hˮƽ任, ȡֵΪ4\n\t\t\t\t\t\t\t\t\t transform_mirror_vֱ任, ȡֵΪ5\n\t\t\t\t\t\t\t\t\t transform_offsetƽƱ任, ȡֵΪ6\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\t/*************************************************\n\tFunction:    ZPHOTO_FastMeanFilter\n\tDescription: ֵģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius--ֵ˲뾶ȡֵΧΪ[0,width / 2]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_SobelFilter\n\tDescription: SobelԵ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\n\t//For Android Development\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBA2BGRA\n\tDescription: RGBAʽתBGRAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_BGRA2RGBA\n\tDescription: BGRAʽתRGBAʽҪΪandroid\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n    EXPORT int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\n\t/*************************************************\n\tFunction:    ZPHOTO_Fragment\n\tDescription: Ƭ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_MotionBlur\n\tDescription: ˶ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-˶ģǶֵȡֵΧΪ[0,360]\n\t\t\t\t distance-˶ģֵȡֵΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\t/*************************************************\n\tFunction:    ZPHOTO_SurfaceBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t threshold-ģֵֵȡֵΧΪ[0,255]\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,10]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_RadialBlur\n\tDescription: תģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ѡģX\n\t\t\t\t cenY-תģY\n\t\t\t\t amount-תģ̶ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_ZoomBlur\n\tDescription: ģ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cenX-ģX\n\t\t\t\t cenY-ģY\n\t\t\t\t sampleRadius-ģ뾶ΧΪ[0-255]\n\t\t\t\t amount-ģ̶,ΧΪ[1-100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Relief\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶   \n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t angle-ǶȣΧΪ[0-360]\n\t\t\t\t amount-̶,ΧΪ[0-500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mean\n\tDescription: ƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\t/*************************************************\n\tFunction:    ZPHOTO_Mosaic\n\tDescription: \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-Mosaic뾶,ΧΪ[0,200]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Mosaic(unsigned char* srcData, int width, int height, int stride, int size);\n\t/*************************************************\n\tFunction:    ZPHOTO_ColorBalance\n\tDescription: ɫƽ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t cyan-ɫΧΪ[-100,100]\n\t\t\t\t magenta-죬ΧΪ[-100,100]\n\t\t\t\t yellow-ɫΧΪ[-100,100]\n\t\t\t\t channel-ͨѡRGB-0,R-1,G-2,B-3\n\t\t\t\t preserveLuminosity-true:ȣfalse:\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\t/*************************************************\n\tFunction:    ZPHOTO_Diffusion\n\tDescription: ɢ\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-ɢ̶ȣΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\t/*************************************************\n\tFunction:    ZPHOTO_LSNBlur\n\tDescription: LSNBlur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-LSNBlur뾶ΧΪ[0,200]\n\t\t\t\t delta-[0,500]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\t/*************************************************\n\tFunction:    ZPHOTO_MedianFilter\n\tDescription: ֵ˲(мɫ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride,int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MaxFilter\n\tDescription: ֵ˲(ֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_MinFilter\n\tDescription: Сֵ˲(Сֵ)\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t radius-ģ뾶ֵȡֵΧΪ[0,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t/*************************************************\n\tFunction:    ZPHOTO_GlowingEdges\n\tDescription: Ե˾\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t edgeSize-ԵֵȡֵΧΪ[1,14]\n\t\t\t\t edgeLightness-ԵֵȡֵΧΪ[0,20]\n\t\t\t\t edgeSmoothness-ƽȣȡֵΧΪ[1,15]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_ImageWarpWave\n\tDescription: Wave \n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽִкΪͼ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-γ̶ȣΧ[0, 100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToYCbCr\n\tDescription: RGBתYCbCr\n\tInput:       Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n\tEXPORT void ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\t/*************************************************\n\tFunction:    ZPHOTO_YCbCrToRGB\n\tDescription: YCbCrתRGB\t   \n\tInput: \t     Y-Y\n\t\t\t\t Cb-Cb\n\t\t\t\t Cr-Cr\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\t\n\t/*************************************************\n\tFunction:    ZPHOTO_RGBToLab\n\tDescription: RGBתLAB\t   \n\tInput:    \t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\t\t\t\t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\t/*************************************************\n\tFunction:    ZPHOTO_LabToRGB\n\tDescription: LABתRGB\t   \n\tInput:    \t L-YΧ[0,255]\n\t\t\t\t A-IΧ[0,255]\n\t\t\t\t B-Q, Χ[0,255]\n\t\t\t\t Red-RΧ[0,255]\n\t\t\t\t Green-GΧ[0,255]\n\t\t\t\t Blue-BΧ[0,255]\n\tOutput:      .\n\tReturn:      .\n\tOthers:      .\n\t*************************************************/\n    EXPORT void ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t/*************************************************\n\tFunction:    ZPHOTO_GammaCorrect\n\tDescription: Gamma\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t intensity-GammaΧ[1,50]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n\t*************************************************/\n\tEXPORT int ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\n    /******************************************************************************* \n    * Function Name  : Natural Saturation \n    * Description    : ȻͶ\n    * Input  srcData : image data\n    * Input  width   : image width\n    * Input  height  : image height\n    * Input  stride  : image stride\n    * Input  saturation     : saturation value to adjust from -100 to 100\n    * Output         : None \n    * Return         : 0-success, others failed\n    *******************************************************************************/\n\tEXPORT int ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tEXPORT int ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n/****************************************************Update***************************************************\n****************************************************Date:2018-06-21*******************************************\nContent:\nSmart blur filter\nAnisotropic Filter\n*************************************************************************************************************/\n/*************************************************\n\tFunction:    ZPHOTO_SmartBlurFilter\n\tDescription: Smart Blur\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t size-ģ뾶ֵȡֵΧΪ[0,100]\n\t\t\t\t threshold-ֵΧ[0,255]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n/*************************************************\n\tFunction:    ZPHOTO_AnisotropicFilter\n\tDescription: Anisotropic Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t iter-ȡֵΧΪ[0,100]\n\t\t\t\t k-ɢϵΧ[0,]\n\t\t\t\t lambda-[0,0.35],default 0.25\n\t\t\t\t offset-[0,10],default 3\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n/*************************************************\n\tFunction:    ZPHOTO_DisplacementFilter\n\tDescription: Displacement Filter\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t maskData-ûͼʽΪ32λBGRAʽ\n\t\t\t\t mWidth-ûͼ\n\t\t\t\t mHeight-ûͼ߶\n\t\t\t\t mStride-ûͼStride\n\t\t\t\t hRatio-ˮƽΧ[-100,100]\n\t\t\t\t vRatio-ֱΧ[-100,100]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\n\tEXPORT int ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n/*************************************************\n\tFunction:    ZPHOTO_NoiseEffect\n\tDescription: Noise effect\n\tInput:       srcData-ԭʼͼ񣬸ʽΪ32λBGRAʽ\n\t             width-ԭʼͼ\n\t\t\t\t height-ԭʼͼ߶\n\t\t\t\t stride-ԭʼͼStride\n\t\t\t\t ratio-ͼĻϱΧ[0,100]\n\t\t\t\t sigma-Χ[0,]\n\t\t\t\t phase-ȣΧ[0,]\n\tOutput:      .\n\tReturn:      0-ɹ,ʧ.\n\tOthers:      .\n*************************************************/\nEXPORT int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#else\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif    \n\t//\n\tint ZPHOTO_Exposure(unsigned char* srcData,int width, int height, int stride, int intensity);\n    int ZPHOTO_Saturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_Posterize(unsigned char *srcData, int width, int height, int stride, int clusterNum);\n\tint ZPHOTO_OverExposure(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_Lightness(unsigned char* srcData,int width, int height, int stride, int lightness);\n\tint ZPHOTO_Invert(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_HueAndSaturation(unsigned char* srcData,int width, int height, int stride,int hue, int saturation);\n\tint ZPHOTO_HistagramEqualize(unsigned char* srcData,int width, int height, int stride);\n\tint ZPHOTO_Desaturate(unsigned char *srcData, int width, int height, int stride, int ratio);\n    int ZPHOTO_Curve(unsigned char* srcData, int width, int height, int stride, int dstChannel, int knotsPos[6]);\n\tint ZPHOTO_ColorLevel(unsigned char * srcData , int width, int height ,int stride , int destChannel, unsigned char inputLeftLimit, float inputMiddle, unsigned char inputRightLimit, unsigned char outputLeftLimit , unsigned char outputRightLimit);\n\tint ZPHOTO_NLinearBrightContrast(unsigned char* srcData,int width,int height,int stride,int bright,int contrast,int threshold);\n    int ZPHOTO_LinearBrightContrast(unsigned char* srcData,int width, int height, int stride, int brightness, int contrast,int threshold);\n    int ZPHOTO_Blackwhite(unsigned char *srcData, int width, int height, int stride, int kRed, int kGreen, int kBlue, int kYellow, int kCyan, int kMagenta);\n\tint ZPHOTO_AutoContrast(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoContrastAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_AutoColorGradation(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_AutoColorGradationAdjustWithParameters(unsigned char *srcData, int width, int height, int stride, float shadowCorrectRatio, float highlightCorrectRatio);\n\tint ZPHOTO_Threshold(unsigned char *srcData, int width, int height, int stride, int threshold);\n\tint ZPHOTO_HighPass(unsigned char* srcData,int width, int height,int stride,float mRadius);\n\tint ZPHOTO_ChannelMixProcess(unsigned char* srcData, int width, int height, int stride, int channel, int kr, int kg, int kb, int N, bool singleColor, bool constAdjust);\n\tint ZPHOTO_USM(unsigned char* srcData,int width, int height,int stride,float radius, int amount, int threshold);\n\tint ZPHOTO_FindEdges(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_Fragment(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_MotionBlur(unsigned char* srcData,int width, int height, int stride, int angle, int distance);\n\tint ZPHOTO_SurfaceBlur(unsigned char *srcData, int width, int height, int stride,int threshold, int radius);\n\n\t//V1.2\n\tint ZPHOTO_RadialBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int amount);\n\tint ZPHOTO_ZoomBlur(unsigned char* srcData, int width, int height ,int stride, int cenX, int cenY, int sampleRadius, int amount);\n\tint ZPHOTO_Relief(unsigned char *srcData, int width, int height, int stride, int angle, int amount);\n\tint ZPHOTO_Mean(unsigned char *srcData, int width, int height, int stride);\n\tint ZPHOTO_ColorBalance(unsigned char* srcData, int width, int height, int stride, int cyan, int magenta, int yellow, int channel, bool preserveLuminosity);\n\tint ZPHOTO_LSNBlur(unsigned char* srcData, int width, int height, int stride, int radius, int delta);\n\tint ZPHOTO_Mosaic(unsigned char *srcData, int width, int height, int stride, int size);\n\tint ZPHOTO_Diffusion(unsigned char* srcData,int width, int height,int stride,int intensity);\n\tint ZPHOTO_MedianFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MaxFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\tint ZPHOTO_MinFilter(unsigned char *srcData, int width, int height, int stride, int radius);\n\t\n\tvoid ZPHOTO_RGBToYCbCr(int R, int G, int B, int*Y,int*Cb, int* Cr);\n\tvoid ZPHOTO_YCbCrToRGB(int Y, int Cb, int Cr, int*Red,int*Green, int* Blue);\n\tvoid ZPHOTO_RGBToLab(int Red, int Green, int Blue, int* L, int *A, int *B);\n\tvoid ZPHOTO_LabToRGB(int L, int A, int B, int* Red, int* Green, int* Blue);\n\t///ͼϹ\n\tint ZPHOTO_ModeDarken(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeMultiply(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearBurn(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDarkness(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeLighten(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeScreen(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeColorLinearDodge(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLightColor(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeOverlay(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSoftLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeHardLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeVividLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeLinearLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModePinLight(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSolidColorMixing(int *baseRed,int *baseGreen,int *baseBlue,int mixRed,int mixGreen,int mixBlue);\n\tint ZPHOTO_ModeDifference(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeExclusion(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeSubtraction(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDivide(int basePixel,int mixPixel);\n\tint ZPHOTO_ModeDesaturate(int red,int green,int blue);\n\tint ZPHOTO_ModeColorInvert(int *red,int *green,int *blue);\n\tint ZPHOTO_ImageBlendEffect(unsigned char* baseData, int width, int height, int stride, unsigned char* mixData, int blendMode);//ͼ\n\n\t//չ\n\tint ZPHOTO_FastestGaussFilter(unsigned char* srcData,int width, int height,int stride,float radius);\n\tint ZPHOTO_ColorTemperature(unsigned char* srcData,int width, int height, int stride, int intensity);\n\tint ZPHOTO_CalcWH( int inputImgSize[2], float angle, float scale, int transform_method, int outputImgSize[2],float H[]);\n    int ZPHOTO_ImageTransformation(unsigned char *srcData, int srcImgSize[2], unsigned char *dstData, int dstImgSize[2], float H[], int Interpolation_method, int Transform_method);\n\tint ZPHOTO_FastMeanFilter(unsigned char* srcData, int width, int height ,int stride, int radius);\n\tint ZPHOTO_SobelFilter(unsigned char *srcData, int width, int height,int stride);\n\tint ZPHOTO_GlowingEdges(unsigned char* srcData, int width ,int height, int stride, int edgeSize, int edgeLightness, int edgeSmoothness);\n\tint ZPHOTO_ImageWarpWave(unsigned char *srcData, int width, int height, int stride, int intensity);\n    //For Android Development\n    int ZPHOTO_RGBA2BGRA(unsigned char* srcData, int width, int height, int stride);\n    int ZPHOTO_BGRA2RGBA(unsigned char* srcData, int width, int height, int stride);\n\tint ZPHOTO_GammaCorrect(unsigned char* srcData, int width, int height, int stride, int intensity);\n\tint ZPHOTO_HighlightShadowPrecise(unsigned char* srcData,int width, int height, int stride, float highlight, float shadow);\n\tint ZPHOTO_NaturalSaturation(unsigned char* srcData,int width, int height, int stride, int saturation);\n\tint ZPHOTO_LUTFilter(unsigned char* srcData, int width ,int height, int stride, unsigned char*Map, int ratio);\n\tint ZPHOTO_SmartBlurFilter(unsigned char* srcData, int width, int height, int stride, int size, int threshold);\n\tint ZPHOTO_AnisotropicFilter(unsigned char* srcData, int width, int height, int stride, int iter, float k, float lambda = 0.25, int offset = 3);\n\tint ZPHOTO_DisplacementFilter(unsigned char* srcData, int width, int height, int stride, unsigned char* maskData, int mWidth, int mHeight, int mStride, int hRatio, int vRatio);\n    int ZPHOTO_NoiseEffect(unsigned char *srcData, int width, int height, int stride, int ratio, float sigma, float phase);\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif\n\n\n\n#endif\n"
  }
]