export class LoaderContext { public static UNDEFINED: number = 0; public static SINGLEPASS_MATERIALS: number = 1; public static MULTIPASS_MATERIALS: number = 2; public static ON_DEMAND: string = 'onDemand'; public static PRELOADED: string = 'preloaded'; private _includeDependencies: boolean; private _dependencyBaseUrl: string; private _embeddedDataByUrl: Object; private _remappedUrls: Object; private _materialMode: number; private _externalAssetMode: string; private _overrideAbsPath: boolean; private _overrideFullUrls: boolean; /** * LoaderContext provides configuration for the Loader load() and parse() * operations. Use it to configure how (and if) dependencies are loaded, or * to map dependency URLs to embedded data. * * @see away.loading.Loader */ constructor(includeDependencies: boolean = true, dependencyBaseUrl: string = null) { this._includeDependencies = includeDependencies; this._dependencyBaseUrl = dependencyBaseUrl || ''; this._embeddedDataByUrl = {}; this._remappedUrls = {}; this._materialMode = LoaderContext.UNDEFINED; this._externalAssetMode = LoaderContext.PRELOADED; } /** * Defines whether dependencies (all files except the one at the URL given * to the load() or parseData() operations) should be automatically loaded. * Defaults to true. */ public get includeDependencies(): boolean { return this._includeDependencies; } public set includeDependencies(val: boolean) { this._includeDependencies = val; } /** * MaterialMode defines, if the Parser should create SinglePass or MultiPass * Materials Options: 0 (Default / undefined) - All Parsers will create * SinglePassMaterials, but the AWD2.1parser will create Materials as they * are defined in the file 1 (Force SinglePass) - All Parsers create * SinglePassMaterials 2 (Force MultiPass) - All Parsers will create * MultiPassMaterials * */ public get materialMode(): number { return this._materialMode; } public set materialMode(value: number) { this._materialMode = value; } public get externalAssetMode(): string { return this._externalAssetMode; } public set externalAssetMode(value: string) { this._externalAssetMode = value; } /** * A base URL that will be prepended to all relative dependency URLs found * in a loaded resource. Absolute paths will not be affected by the value of * this property. */ public get dependencyBaseUrl(): string { return this._dependencyBaseUrl; } public set dependencyBaseUrl(val: string) { this._dependencyBaseUrl = val; } /** * Defines whether absolute paths (defined as paths that begin with a "/") * should be overridden with the dependencyBaseUrl defined in this context. * If this is true, and the base path is "base", /path/to/asset.jpg will be * resolved as base/path/to/asset.jpg. */ public get overrideAbsolutePaths(): boolean { return this._overrideAbsPath; } public set overrideAbsolutePaths(val: boolean) { this._overrideAbsPath = val; } /** * Defines whether "full" URLs (defined as a URL that includes a scheme, * e.g. http://) should be overridden with the dependencyBaseUrl defined in * this context. If this is true, and the base path is "base", * http://example.com/path/to/asset.jpg will be resolved as * base/path/to/asset.jpg. */ public get overrideFullURLs(): boolean { return this._overrideFullUrls; } public set overrideFullURLs(val: boolean) { this._overrideFullUrls = val; } /** * Map a URL to another URL, so that files that are referred to by the * original URL will instead be loaded from the new URL. Use this when your * file structure does not match the one that is expected by the loaded * file. * * @param originalUrl The original URL which is referenced in the loaded * resource. * @param newUrl The URL from which away.should load the resource instead. * * @see mapUrlToData() */ public mapUrl(originalUrl: string, newUrl: string): void { this._remappedUrls[originalUrl] = newUrl; } /** * Map a URL to embedded data, so that instead of trying to load a * dependency from the URL at which it's referenced, the dependency data * will be retrieved straight from the memory instead. * * @param originalUrl The original URL which is referenced in the loaded * resource. * @param data The embedded data. Can be ByteArray or a export class which * can be used to create a bytearray. */ public mapUrlToData(originalUrl: string, data: any): void { this._embeddedDataByUrl[originalUrl] = data; } /** * @private * Defines whether embedded data has been mapped to a particular URL. */ public _iHasDataForUrl(url: string): boolean { return this._embeddedDataByUrl.hasOwnProperty(url); } /** * @private * Returns embedded data for a particular URL. */ public _iGetDataForUrl(url: string): any { return this._embeddedDataByUrl[url]; } /** * @private * Defines whether a replacement URL has been mapped to a particular URL. */ public _iHasMappingForUrl(url: string): boolean { return this._remappedUrls.hasOwnProperty(url); } /** * @private * Returns new (replacement) URL for a particular original URL. */ public _iGetRemappedUrl(originalUrl: string): string { return this._remappedUrls[originalUrl]; } }