Add internal Base64 type

This commit is contained in:
Joshua Granick
2019-07-09 12:12:29 -07:00
parent af8634d3af
commit a2e62f16a1
5 changed files with 17 additions and 58 deletions

View File

@@ -8,6 +8,7 @@ import haxe.macro.Expr;
import haxe.macro.Type;
#end
#if (macro && !display)
import lime._internal.format.Base64;
import sys.io.File;
import sys.FileSystem;
#end
@@ -17,25 +18,6 @@ class AssetsMacro
#if !macro
macro public static function cacheVersion() {}
#else
private static var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
private static var base64Encoder:BaseCode;
private static function base64Encode(bytes:Bytes):String
{
var extension = switch (bytes.length % 3)
{
case 1: "==";
case 2: "=";
default: "";
}
if (base64Encoder == null)
{
base64Encoder = new BaseCode(Bytes.ofString(base64Chars));
}
return base64Encoder.encodeBytes(bytes).toString() + extension;
}
macro public static function cacheVersion()
{
@@ -226,7 +208,7 @@ class AssetsMacro
pos: position
});
var base64 = base64Encode(bytes);
var base64 = Base64.encode(bytes);
Context.addResource(resourceName, Bytes.ofString(base64));
}
else

View File

@@ -1,12 +1,11 @@
package lime.graphics;
import haxe.crypto.Base64;
import haxe.crypto.BaseCode;
import haxe.io.Bytes;
import haxe.io.BytesData;
import haxe.io.BytesInput;
import haxe.io.BytesOutput;
import lime._internal.backend.native.NativeCFFI;
import lime._internal.format.Base64;
import lime._internal.format.BMP;
import lime._internal.format.JPEG;
import lime._internal.format.PNG;
@@ -87,9 +86,6 @@ import sys.io.File;
#end
class Image
{
private static var __base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
private static var __base64Encoder:BaseCode;
/**
The `ImageBuffer` store that backs the `Image`
**/
@@ -972,7 +968,7 @@ class Image
return Future.withValue(null);
}
return loadFromBase64(__base64Encode(bytes), type);
return loadFromBase64(Base64.encode(bytes), type);
#elseif flash
var promise = new Promise<Image>();
@@ -1401,27 +1397,6 @@ class Image
return 0;
}
private static function __base64Encode(bytes:Bytes):String
{
#if (js && html5)
var extension = switch (bytes.length % 3)
{
case 1: "==";
case 2: "=";
default: "";
}
if (__base64Encoder == null)
{
__base64Encoder = new BaseCode(Bytes.ofString(__base64Chars));
}
return __base64Encoder.encodeBytes(bytes).toString() + extension;
#else
return "";
#end
}
@:noCompletion private function __clipRect(r:Rectangle):Rectangle
{
if (r == null) return null;
@@ -1517,7 +1492,7 @@ class Image
return false;
}
__fromBase64(__base64Encode(bytes), type, onload);
__fromBase64(Base64.encode(bytes), type, onload);
return true;
#elseif (lime_cffi && !macro)
var imageBuffer:ImageBuffer = null;

View File

@@ -1,9 +1,9 @@
package lime.media;
import haxe.crypto.Base64;
import haxe.io.Bytes;
import haxe.io.Path;
import lime._internal.backend.native.NativeCFFI;
import lime._internal.format.Base64;
import lime.app.Future;
import lime.app.Promise;
import lime.media.openal.AL;
@@ -151,13 +151,13 @@ class AudioBuffer
#if (js && html5 && lime_howlerjs)
var audioBuffer = new AudioBuffer();
#if force_html5_audio
audioBuffer.__srcHowl = new Howl({src: [path], html5: true, preload: false});
#else
audioBuffer.__srcHowl = new Howl({src: [path], preload: false});
#end
return audioBuffer;
#elseif flash
switch (Path.extension(path))
@@ -200,13 +200,13 @@ class AudioBuffer
{
#if (js && html5 && lime_howlerjs)
var audioBuffer = new AudioBuffer();
#if force_html5_audio
audioBuffer.__srcHowl = new Howl({src: paths, html5: true, preload: false});
#else
audioBuffer.__srcHowl = new Howl({src: paths, preload: false});
#end
return audioBuffer;
#else
var buffer = null;

View File

@@ -5,6 +5,7 @@ import haxe.io.Bytes as HaxeBytes;
import haxe.Serializer;
import haxe.Unserializer;
import hxp.*;
import lime._internal.format.Base64;
import lime.tools.AssetType;
import lime.tools.Asset;
import lime.tools.HXProject;
@@ -46,7 +47,7 @@ class AssetHelper
{
if (asset.encoding == AssetEncoding.BASE64)
{
File.saveBytes(destination, StringTools.base64Decode(asset.data));
File.saveBytes(destination, Base64.decode(asset.data));
}
else if (Std.is(asset.data, HaxeBytes))
{
@@ -83,7 +84,7 @@ class AssetHelper
{
if (asset.encoding == AssetEncoding.BASE64)
{
File.saveBytes(destination, StringTools.base64Decode(asset.data));
File.saveBytes(destination, Base64.decode(asset.data));
}
else if (Std.is(asset.data, HaxeBytes))
{

View File

@@ -4,6 +4,7 @@ package lime.tools;
// import openfl.utils.ByteArray;
import haxe.io.Bytes;
import hxp.*;
import lime._internal.format.Base64;
import lime.tools.Asset;
import lime.tools.AssetEncoding;
import lime.tools.AssetType;
@@ -281,7 +282,7 @@ class FlashHelper
{
if (inAsset.encoding == AssetEncoding.BASE64)
{
outTags.push(TBitsJPEG(cid, JDJPEG2(StringTools.base64Decode(inAsset.data))));
outTags.push(TBitsJPEG(cid, JDJPEG2(Base64.decode(inAsset.data))));
}
else
{
@@ -495,7 +496,7 @@ class FlashHelper
{
if (inAsset.encoding == AssetEncoding.BASE64)
{
bytes = StringTools.base64Decode(inAsset.data);
bytes = Base64.decode(inAsset.data);
}
else if (Std.is(inAsset.data, Bytes))
{
@@ -803,7 +804,7 @@ class FlashHelper
if (asset.encoding == AssetEncoding.BASE64)
{
File.saveBytes(sourcePath, StringTools.base64Decode(asset.data));
File.saveBytes(sourcePath, Base64.decode(asset.data));
}
else if (Std.is(asset.data, Bytes))
{