private AbcInstance EmbedResource(ResourceBundleContext context, Function func) { var embed = Embed.FromDirective(func); if (embed == null) { throw Errors.RBC.UnableToResolveEmbed.CreateException(func); } string type = embed.MimeType; string source = embed.Source; bool jpeg = false; if (MimeTypes.IsBitmap(type) || (jpeg = MimeTypes.IsJpeg(type))) { var image = ResolveImage(context, source); if (image == null) { throw Errors.RBC.UnableToResolveImage.CreateException(source); } var name = DefineAssetName(context, "embedded_image_"); var instance = _embedAssetInstances[name] as AbcInstance; if (instance != null) { return(instance); } var mn = DefineName(QName.PfxPublic(name)); instance = Generator.EmbeddedAssets.BuildBitmapAsset(mn, image, jpeg); _embedAssetInstances[name] = instance; return(instance); } //TODO: Support other mime-types throw Errors.RBC.NotSupportedMimeType.CreateException(embed.Source, embed.MimeType); }
public void Build(IField field, AbcTrait trait) { var attr = field.FindAttribute(Attrs.Embed); if (attr == null) { return; } _generator.CheckEmbedAsset(field); var embed = Embed.FromCustomAttribute(attr); trait.Embed = embed; string type = embed.MimeType; if (MimeTypes.IsBitmap(type)) { var instance = BuildBitmapAsset(trait); _generator.SwfCompiler.Assets.DefineBitmapAsset(embed.Source, instance); return; } if (MimeTypes.IsJpeg(type)) { var instance = BuildBitmapAsset(trait); _generator.SwfCompiler.Assets.DefineJpegAsset(embed.Source, instance); return; } if (string.Equals(type, MimeTypes.Application.OctetStream, StringComparison.OrdinalIgnoreCase)) { var instance = BuildByteArrayAsset(trait); _generator.SwfCompiler.Assets.DefineByteArrayAsset(embed.Source, instance); return; } //TODO: Support other mime-types throw Errors.RBC.NotSupportedMimeType.CreateException(embed.Source, embed.MimeType); }