Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PCL profile 111 version of PNGCS #11

Open
wants to merge 17 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
265 changes: 265 additions & 0 deletions Hjg.Pngcs.Portable/Hjg.Pngcs.Portable.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{CCF5E155-ECF0-4DBC-BC7C-69FE1AAAF235}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Ar.Com.Hjg.Pngcs</RootNamespace>
<AssemblyName>Pngcs.Portable</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetFrameworkProfile>Profile111</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET45;PORTABLE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NET45;PORTABLE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<!-- A reference to the entire .NET Framework is automatically included -->
</ItemGroup>
<ItemGroup>
<Compile Include="..\Hjg.Pngcs\BufferedStreamReader.cs">
<Link>BufferedStreamReader.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ChunkReaderMode.cs">
<Link>ChunkReaderMode.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkCopyBehaviour.cs">
<Link>Chunks\ChunkCopyBehaviour.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkHelper.cs">
<Link>Chunks\ChunkHelper.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkLoadBehaviour.cs">
<Link>Chunks\ChunkLoadBehaviour.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkPredicate.cs">
<Link>Chunks\ChunkPredicate.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkPredicateEquiv.cs">
<Link>Chunks\ChunkPredicateEquiv.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkPredicateId.cs">
<Link>Chunks\ChunkPredicateId.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkPredicateId2.cs">
<Link>Chunks\ChunkPredicateId2.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunkRaw.cs">
<Link>Chunks\ChunkRaw.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunksList.cs">
<Link>Chunks\ChunksList.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\ChunksListForWrite.cs">
<Link>Chunks\ChunksListForWrite.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunk.cs">
<Link>Chunks\PngChunk.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkBKGD.cs">
<Link>Chunks\PngChunkBKGD.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkCHRM.cs">
<Link>Chunks\PngChunkCHRM.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkGAMA.cs">
<Link>Chunks\PngChunkGAMA.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkHIST.cs">
<Link>Chunks\PngChunkHIST.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkICCP.cs">
<Link>Chunks\PngChunkICCP.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkIDAT.cs">
<Link>Chunks\PngChunkIDAT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkIEND.cs">
<Link>Chunks\PngChunkIEND.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkIHDR.cs">
<Link>Chunks\PngChunkIHDR.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkITXT.cs">
<Link>Chunks\PngChunkITXT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkMultiple.cs">
<Link>Chunks\PngChunkMultiple.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkOFFS.cs">
<Link>Chunks\PngChunkOFFS.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkPHYS.cs">
<Link>Chunks\PngChunkPHYS.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkPLTE.cs">
<Link>Chunks\PngChunkPLTE.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSBIT.cs">
<Link>Chunks\PngChunkSBIT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSingle.cs">
<Link>Chunks\PngChunkSingle.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSkipped.cs">
<Link>Chunks\PngChunkSkipped.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSPLT.cs">
<Link>Chunks\PngChunkSPLT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSRGB.cs">
<Link>Chunks\PngChunkSRGB.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkSTER.cs">
<Link>Chunks\PngChunkSTER.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkTEXT.cs">
<Link>Chunks\PngChunkTEXT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkTextVar.cs">
<Link>Chunks\PngChunkTextVar.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkTIME.cs">
<Link>Chunks\PngChunkTIME.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkTRNS.cs">
<Link>Chunks\PngChunkTRNS.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkUNKNOWN.cs">
<Link>Chunks\PngChunkUNKNOWN.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngChunkZTXT.cs">
<Link>Chunks\PngChunkZTXT.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Chunks\PngMetadata.cs">
<Link>Chunks\PngMetadata.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\FilterType.cs">
<Link>FilterType.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\FilterWriteStrategy.cs">
<Link>FilterWriteStrategy.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\IBytesConsumer.cs">
<Link>IBytesConsumer.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ImageInfo.cs">
<Link>ImageInfo.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ImageLine.cs">
<Link>ImageLine.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ImageLineHelper.cs">
<Link>ImageLineHelper.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ImageLines.cs">
<Link>ImageLines.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngCsUtils.cs">
<Link>PngCsUtils.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngDeinterlacer.cs">
<Link>PngDeinterlacer.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngHelperInternal.cs">
<Link>PngHelperInternal.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngIDatChunkInputStream.cs">
<Link>PngIDatChunkInputStream.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngIDatChunkOutputStream.cs">
<Link>PngIDatChunkOutputStream.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjBadCrcException.cs">
<Link>PngjBadCrcException.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjException.cs">
<Link>PngjException.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjExceptionInternal.cs">
<Link>PngjExceptionInternal.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjInputException.cs">
<Link>PngjInputException.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjOutputException.cs">
<Link>PngjOutputException.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngjUnsupportedException.cs">
<Link>PngjUnsupportedException.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngReader.cs">
<Link>PngReader.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\PngWriter.cs">
<Link>PngWriter.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\ProgressiveOutputStream.cs">
<Link>ProgressiveOutputStream.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\Adler32.cs">
<Link>Zlib\Adler32.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\AZlibInputStream.cs">
<Link>Zlib\AZlibInputStream.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\AZlibOutputStream.cs">
<Link>Zlib\AZlibOutputStream.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\CRC32.cs">
<Link>Zlib\CRC32.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\DeflateCompressLevel.cs">
<Link>Zlib\DeflateCompressLevel.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\EDeflateCompressStrategy.cs">
<Link>Zlib\EDeflateCompressStrategy.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\ZlibInputStreamIs.cs">
<Link>Zlib\ZlibInputStreamIs.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\ZlibInputStreamMs.cs">
<Link>Zlib\ZlibInputStreamMs.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\ZlibOutputStreamIs.cs">
<Link>Zlib\ZlibOutputStreamIs.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\ZlibOutputStreamMs.cs">
<Link>Zlib\ZlibOutputStreamMs.cs</Link>
</Compile>
<Compile Include="..\Hjg.Pngcs\Zlib\ZlibStreamFactory.cs">
<Link>Zlib\ZlibStreamFactory.cs</Link>
</Compile>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
4 changes: 2 additions & 2 deletions Hjg.Pngcs/BufferedStreamReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class BufferedStreamFeeder
private bool eof = false;
private bool closeStream = true;
private bool failIfNoFeed = false;
private static const int DEFAULTSIZE = 8192;
private const int DEFAULTSIZE = 8192;

public BufferedStreamFeeder(Stream ist) : this(ist,DEFAULTSIZE) {
}
Expand Down Expand Up @@ -126,7 +126,7 @@ public void close()
try
{
if (_stream != null && closeStream)
_stream.Close();
_stream.Dispose();
}
catch (Exception e)
{
Expand Down
8 changes: 4 additions & 4 deletions Hjg.Pngcs/Chunks/ChunkHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public static byte[] ToBytes(String x) {
/// <param name="x"></param>
/// <returns></returns>
public static String ToString(byte[] x) {
return Hjg.Pngcs.PngHelperInternal.charsetLatin1.GetString(x);
return Hjg.Pngcs.PngHelperInternal.charsetLatin1.GetString(x, 0, x.Length);
}
/// <summary>
/// Converts to String using Latin1 (ISO-8859-1)
Expand Down Expand Up @@ -81,7 +81,7 @@ public static byte[] ToBytesUTF8(String x) {
/// <param name="x"></param>
/// <returns></returns>
public static String ToStringUTF8(byte[] x) {
return Hjg.Pngcs.PngHelperInternal.charsetUtf8.GetString(x);
return Hjg.Pngcs.PngHelperInternal.charsetUtf8.GetString(x, 0, x.Length);
}
/// <summary>
/// Converts to string using UTF-8
Expand Down Expand Up @@ -187,8 +187,8 @@ internal static byte[] compressBytes(byte[] ori, int offset, int len, bool compr
Stream outx = outb;
if (compress) outx = ZlibStreamFactory.createZlibOutputStream(outb);
shovelInToOut(inx, outx);
inx.Close();
outx.Close();
inx.Dispose();
outx.Dispose();
byte[] res = outb.ToArray();
return res;
} catch (Exception e) {
Expand Down
11 changes: 10 additions & 1 deletion Hjg.Pngcs/Chunks/ChunkRaw.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,16 @@ internal MemoryStream GetAsByteStream() { // only the data
return new MemoryStream(Data);
}

private void AllocData() {
/**
* offset in the full PNG stream, in bytes. only informational, for read chunks (0=NA)
*/
public void setOffset(long offset)
{
this.offset = offset;
}

private void AllocData()
{
if (Data == null || Data.Length < Len)
Data = new byte[Len];
}
Expand Down
22 changes: 16 additions & 6 deletions Hjg.Pngcs/Chunks/PngChunk.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
namespace Hjg.Pngcs.Chunks {
namespace Hjg.Pngcs.Chunks
{

using Hjg.Pngcs;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;

#if PORTABLE
using System.Linq;
using System.Reflection;
#endif

/// <summary>
/// Represents a instance of a PNG chunk
Expand Down Expand Up @@ -165,8 +166,17 @@ internal static PngChunk FactoryFromId(String cid, ImageInfo info) {
if (factoryMap == null) initFactory();
if (isKnown(cid)) {
Type t = factoryMap[cid];
if (t == null) Console.Error.WriteLine("What?? " + cid);
if (t == null) System.Diagnostics.Debug.WriteLine("What?? " + cid);
#if PORTABLE
System.Reflection.ConstructorInfo cons = t.GetTypeInfo().DeclaredConstructors.Single(
c =>
{
var p = c.GetParameters();
return p.Length == 1 && p[0].ParameterType == typeof(ImageInfo);
});
#else
System.Reflection.ConstructorInfo cons = t.GetConstructor(new Type[] { typeof(ImageInfo) });
#endif
object o = cons.Invoke(new object[] { info });
chunk = (PngChunk)o;
}
Expand Down
2 changes: 1 addition & 1 deletion Hjg.Pngcs/Hjg.Pngcs.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.SharpZipLib" Condition=" '$(TargetFrameworkVersion)' == 'v2.0' ">
<HintPath>..\..\..\..\..\..\..\temp\ICSharpCode.SharpZipLib.dll</HintPath>
<HintPath>..\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
Expand Down
1 change: 1 addition & 0 deletions Hjg.Pngcs/IBytesConsumer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ namespace Ar.Com.Hjg.Pngcs
{
interface IBytesConsumer
{
int consume(byte[] buf, int offset, int len);
}
}
2 changes: 1 addition & 1 deletion Hjg.Pngcs/ImageInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace Hjg.Pngcs {
/// http://www.w3.org/TR/PNG/#11IHDR
/// </remarks>
public class ImageInfo {
private const int MAX_COLS_ROWS_VAL = 400000; // very big value, but no so ridiculous as 2^32
private const int MAX_COLS_ROWS_VAL = 0X7FEFFFFF; // very big value, but no so ridiculous as 2^32

/// <summary>
/// Image width, in pixels
Expand Down
Loading