Example #1
0
        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);
        }
Example #2
0
        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);
        }