Skip to content

Commit

Permalink
Merge pull request MonoGame#1879 from hach-que/develop
Browse files Browse the repository at this point in the history
New MonoGame content pipeline now "works" for Linux
  • Loading branch information
KonajuGames committed Jul 24, 2013
2 parents 7ec1ec8 + caac344 commit 7a793b5
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 6 deletions.
46 changes: 46 additions & 0 deletions MonoGame.Framework.Content.Pipeline.Linux.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Framework.Content.Pipeline.Linux", "MonoGame.Framework.Content.Pipeline\MonoGame.Framework.Content.Pipeline.Linux.csproj", "{B950DE10-AC5D-4BD9-B817-51247C4A732D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Framework.Linux", "MonoGame.Framework\MonoGame.Framework.Linux.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network.Linux", "ThirdParty\Lidgren.Network\Lidgren.Network.Linux.csproj", "{AE483C29-042E-4226-BA52-D247CE7676DA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.ActiveCfg = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.Build.0 = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.ActiveCfg = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.Build.0 = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.ActiveCfg = Release|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.Build.0 = Release|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.ActiveCfg = Release|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.Build.0 = Release|x86
{AE483C29-042E-4226-BA52-D247CE7676DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Debug|x86.ActiveCfg = Debug|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Debug|x86.Build.0 = Debug|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Release|Any CPU.Build.0 = Release|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Release|x86.ActiveCfg = Release|Any CPU
{AE483C29-042E-4226-BA52-D247CE7676DA}.Release|x86.Build.0 = Release|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Debug|x86.ActiveCfg = Debug|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Debug|x86.Build.0 = Debug|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Release|Any CPU.Build.0 = Release|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Release|x86.ActiveCfg = Release|Any CPU
{B950DE10-AC5D-4BD9-B817-51247C4A732D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = MonoGame.Framework.Content.Pipeline\MonoGame.Framework.Content.Pipeline.Linux.csproj
EndGlobalSection
EndGlobal
33 changes: 32 additions & 1 deletion MonoGame.Framework.Content.Pipeline/Graphics/FontHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

namespace Microsoft.Xna.Framework.Content.Pipeline.Graphics
{
#if WINDOWS

static class FontHelper
{
[StructLayout(LayoutKind.Sequential)]
Expand Down Expand Up @@ -39,6 +41,35 @@ public static ABC GetCharWidthABC(char ch, Font font, System.Drawing.Graphics gr

return _temp[0];
}

}

#endif

#if LINUX

static class FontHelper
{
[StructLayout(LayoutKind.Sequential)]
public struct ABC
{
public int abcA;
public uint abcB;
public int abcC;
}

public static ABC GetCharWidthABC(char ch, Font font, System.Drawing.Graphics gr)
{
var sf = StringFormat.GenericTypographic;
sf.Trimming = StringTrimming.None;
sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
return new ABC
{
abcA = 0,
abcB = (uint)gr.MeasureString(ch.ToString(), font, new PointF(0, 0), sf).Width,
abcC = 0
};
}
}

#endif
}
13 changes: 12 additions & 1 deletion MonoGame.Framework.Content.Pipeline/Graphics/GraphicsUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,14 @@
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
#if WINDOWS
using Nvidia.TextureTools;
#endif

namespace Microsoft.Xna.Framework.Content.Pipeline.Graphics
{
#if WINDOWS

class DxtDataHandler
{
private TextureContent _content;
Expand Down Expand Up @@ -71,6 +75,8 @@ protected bool writeData(IntPtr data, int length)
return true;
}
}

#endif

public static class GraphicsUtil
{
Expand Down Expand Up @@ -158,6 +164,7 @@ public static void CompressTexture(TextureContent content, TargetPlatform platfo
{
// TODO: At the moment, only DXT compression from windows machine is supported
// Add more here as they become available.
#if WINDOWS
switch (platform)
{
case TargetPlatform.Windows:
Expand All @@ -172,15 +179,17 @@ public static void CompressTexture(TextureContent content, TargetPlatform platfo
case TargetPlatform.Xbox360:
CompressDxt(content, generateMipmaps);
break;

case TargetPlatform.iOS:
CompressPvrtc(content, generateMipmaps, premultipliedAlpha);
break;

default:
throw new NotImplementedException(string.Format("Texture compression is not implemented for {0}", platform));
}
#endif
}

#if WINDOWS

private static void CompressPvrtc(TextureContent content, bool generateMipmaps, bool premultipliedAlpha)
{
Expand Down Expand Up @@ -280,6 +289,8 @@ private static void CompressDxt(TextureContent content, bool generateMipmaps)

dataHandle.Free();
}

#endif

internal static bool ContainsFractionalAlpha(byte[] data)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@
<Compile Include="ContentProcessorContext.cs" />
<Compile Include="EffectImporter.cs" />
<Compile Include="ExternalReference.cs" />
<Compile Include="FbxImporter.cs" />
<Compile Include="FontDescriptionImporter.cs" />
<Compile Include="Graphics\AnimationChannel.cs" />
<Compile Include="Graphics\AnimationChannelDictionary.cs" />
Expand All @@ -85,7 +84,6 @@
<Compile Include="Graphics\FontDescriptionStyle.cs" />
<Compile Include="Graphics\GeometryContent.cs" />
<Compile Include="Graphics\GeometryContentCollection.cs" />
<Compile Include="Graphics\GraphicsUtil.cs" />
<Compile Include="Graphics\IndexCollection.cs" />
<Compile Include="Graphics\IndirectPositionCollection.cs" />
<Compile Include="Graphics\MaterialContent.cs" />
Expand Down Expand Up @@ -146,6 +144,64 @@
<Compile Include="WmvImporter.cs" />
<Compile Include="XImporter.cs" />
<Compile Include="XmlImporter.cs" />
<Compile Include="Serialization\Compiler\ArrayWriter.cs" />
<Compile Include="Serialization\Compiler\BooleanWriter.cs" />
<Compile Include="Serialization\Compiler\BoundingBoxWriter.cs" />
<Compile Include="Serialization\Compiler\BoundingFrustumWriter.cs" />
<Compile Include="Serialization\Compiler\BoundingSphereWriter.cs" />
<Compile Include="Serialization\Compiler\BuiltInContentWriter.cs" />
<Compile Include="Serialization\Compiler\ByteWriter.cs" />
<Compile Include="Serialization\Compiler\CharWriter.cs" />
<Compile Include="Serialization\Compiler\ColorWriter.cs" />
<Compile Include="Serialization\Compiler\CurveWriter.cs" />
<Compile Include="Serialization\Compiler\DateTimeWriter.cs" />
<Compile Include="Serialization\Compiler\DecimalWriter.cs" />
<Compile Include="Serialization\Compiler\DictionaryWriter.cs" />
<Compile Include="Serialization\Compiler\DoubleWriter.cs" />
<Compile Include="Serialization\Compiler\EnumWriter.cs" />
<Compile Include="Serialization\Compiler\ExternalReferenceWriter.cs" />
<Compile Include="Serialization\Compiler\IndexBufferWriter.cs" />
<Compile Include="Serialization\Compiler\Int16Writer.cs" />
<Compile Include="Serialization\Compiler\Int32Writer.cs" />
<Compile Include="Serialization\Compiler\Int64Writer.cs" />
<Compile Include="Serialization\Compiler\ListWriter.cs" />
<Compile Include="Serialization\Compiler\MatrixWriter.cs" />
<Compile Include="Serialization\Compiler\ModelWriter.cs" />
<Compile Include="Serialization\Compiler\NullableWriter.cs" />
<Compile Include="Serialization\Compiler\PlaneWriter.cs" />
<Compile Include="Serialization\Compiler\PointWriter.cs" />
<Compile Include="Serialization\Compiler\QuaternionWriter.cs" />
<Compile Include="Serialization\Compiler\RayWriter.cs" />
<Compile Include="Serialization\Compiler\RectangleWriter.cs" />
<Compile Include="Serialization\Compiler\SByteWriter.cs" />
<Compile Include="Serialization\Compiler\SingleWriter.cs" />
<Compile Include="Serialization\Compiler\SpriteFontContentWriter.cs" />
<Compile Include="Serialization\Compiler\StringWriter.cs" />
<Compile Include="Serialization\Compiler\TimeSpanWriter.cs" />
<Compile Include="Serialization\Compiler\UInt16Writer.cs" />
<Compile Include="Serialization\Compiler\UInt32Writer.cs" />
<Compile Include="Serialization\Compiler\UInt64Writer.cs" />
<Compile Include="Serialization\Compiler\Vector2Writer.cs" />
<Compile Include="Serialization\Compiler\Vector3Writer.cs" />
<Compile Include="Serialization\Compiler\Vector4Writer.cs" />
<Compile Include="Serialization\Compiler\VertexBufferWriter.cs" />
<Compile Include="Serialization\Compiler\VertexDeclarationWriter.cs" />
<Compile Include="Graphics\BasicMaterialContent.cs" />
<Compile Include="Graphics\Dxt1BitmapContent.cs" />
<Compile Include="Graphics\Dxt3BitmapContent.cs" />
<Compile Include="Graphics\Dxt5BitmapContent.cs" />
<Compile Include="Graphics\DxtBitmapContent.cs" />
<Compile Include="Graphics\FontHelper.cs" />
<Compile Include="Graphics\PvrtcBitmapContent.cs" />
<Compile Include="Processors\ModelBoneContent.cs" />
<Compile Include="Processors\ModelBoneContentCollection.cs" />
<Compile Include="Processors\ModelContent.cs" />
<Compile Include="Processors\ModelMeshContent.cs" />
<Compile Include="Processors\ModelMeshContentCollection.cs" />
<Compile Include="Processors\ModelMeshPartContent.cs" />
<Compile Include="Processors\ModelMeshPartContentCollection.cs" />
<Compile Include="Processors\ModelProcessor.cs" />
<Compile Include="Graphics\GraphicsUtil.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Expand All @@ -161,4 +217,7 @@
<Name>MonoGame.Framework.Linux</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="FbxImporter.cs" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
using System.IO;
using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
using Microsoft.Xna.Framework.Graphics;
#if WINDOWS
using TwoMGFX;
#endif

namespace Microsoft.Xna.Framework.Content.Pipeline.Processors
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public sealed class ContentCompiler
/// <summary>
/// Initializes a new instance of ContentCompiler.
/// </summary>
internal ContentCompiler()
public ContentCompiler()
{
GetTypeWriters();
}
Expand Down Expand Up @@ -132,7 +132,7 @@ public ContentTypeWriter GetTypeWriter(Type type)
/// <param name="compress">True if the content should be compressed.</param>
/// <param name="rootDirectory">The root directory of the content.</param>
/// <param name="referenceRelocationPath">The path of the XNB file, used to calculate relative paths for external references.</param>
internal void Compile(Stream stream, object content, TargetPlatform targetPlatform, GraphicsProfile targetProfile, bool compressContent, string rootDirectory, string referenceRelocationPath)
public void Compile(Stream stream, object content, TargetPlatform targetPlatform, GraphicsProfile targetProfile, bool compressContent, string rootDirectory, string referenceRelocationPath)
{
using (var writer = new ContentWriter(this, stream, targetPlatform, targetProfile, compressContent, rootDirectory, referenceRelocationPath))
{
Expand Down

0 comments on commit 7a793b5

Please sign in to comment.