mirror of
				https://github.com/lospec/pixel-editor.git
				synced 2023-08-10 21:12:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/** EXTERNALS AND LIBRARIES **/
 | 
						|
//=include lib/cookies.js
 | 
						|
//=include lib/jscolor.js
 | 
						|
//=include lib/sortable.js
 | 
						|
 | 
						|
//=include data/consts.js
 | 
						|
//=include data/palettes.js
 | 
						|
 | 
						|
/** UTILITY AND INPUT **/
 | 
						|
//=include Util.js
 | 
						|
//=include Events.js
 | 
						|
//=include Dialogue.js
 | 
						|
//=include History.js
 | 
						|
//=include Settings.js
 | 
						|
//=include EditorState.js
 | 
						|
 | 
						|
/** COLOR-RELATED **/
 | 
						|
//=include Color.js
 | 
						|
//=include ColorPicker.js
 | 
						|
//=include PaletteBlock.js
 | 
						|
 | 
						|
/** BASE CLASSES **/
 | 
						|
//=include File.js
 | 
						|
//=include Tool.js
 | 
						|
//=include layers/Layer.js
 | 
						|
 | 
						|
/** SPECIAL LAYERS **/
 | 
						|
//=include layers/Checkerboard.js
 | 
						|
//=include layers/PixelGrid.js
 | 
						|
//=include layers/HSymmetryLayer.js
 | 
						|
//=include layers/VSymmetryLayer.js
 | 
						|
 | 
						|
/** TOOLS **/
 | 
						|
//=include tools/DrawingTool.js
 | 
						|
//=include tools/ResizableTool.js
 | 
						|
//=include tools/SelectionTool.js
 | 
						|
 | 
						|
//=include tools/BrushTool.js
 | 
						|
//=include tools/EraserTool.js
 | 
						|
//=include tools/LineTool.js
 | 
						|
//=include tools/RectangleTool.js
 | 
						|
//=include tools/FillTool.js
 | 
						|
//=include tools/EyedropperTool.js
 | 
						|
//=include tools/PanTool.js
 | 
						|
//=include tools/ZoomTool.js
 | 
						|
//=include tools/RectangularSelectionTool.js
 | 
						|
//=include tools/MoveSelectionTool.js
 | 
						|
 | 
						|
/** MODULES AND MENUS **/
 | 
						|
//=include SplashPage.js
 | 
						|
//=include PresetModule.js
 | 
						|
//=include ColorModule.js
 | 
						|
//=include ToolManager.js
 | 
						|
//=include LayerList.js
 | 
						|
 | 
						|
/** STARTUP AND FILE MANAGEMENT **/
 | 
						|
//=include Startup.js
 | 
						|
//=include FileManager.js
 | 
						|
//=include TopMenuModule.js
 | 
						|
 | 
						|
/** HTML INPUT EVENTS **/
 | 
						|
//=include Input.js
 | 
						|
 | 
						|
/** IHER **/
 | 
						|
//=include FeatureToggles.js
 | 
						|
 | 
						|
// Controls execution of this preset module
 | 
						|
PresetModule.instrumentPresetMenu();
 | 
						|
 | 
						|
//when the page is done loading, you can get ready to start
 | 
						|
window.onload = function () {
 | 
						|
    featureToggles.onLoad();
 | 
						|
 | 
						|
    ToolManager.currentTool().updateCursor();
 | 
						|
	
 | 
						|
	//check if there are any url parameters
 | 
						|
	if (window.location.pathname.replace('/pixel-editor/','').length <= 1)  {
 | 
						|
		//show splash screen
 | 
						|
		Dialogue.showDialogue('splash', false);
 | 
						|
	}
 | 
						|
	//url parameters were specified
 | 
						|
	else {
 | 
						|
		let args = window.location.pathname.split('/');
 | 
						|
		let paletteSlug = args[2];
 | 
						|
		let dimentions = args[3];
 | 
						|
 | 
						|
		//fetch palette via lospec palette API
 | 
						|
		fetch('https://lospec.com/palette-list/'+paletteSlug+'.json')
 | 
						|
			.then(response => response.json())
 | 
						|
			.then(data => {
 | 
						|
				//palette loaded successfully
 | 
						|
				palettes[paletteSlug] = data;
 | 
						|
				palettes[paletteSlug].specified = true;
 | 
						|
 | 
						|
				//refresh list of palettes
 | 
						|
				document.getElementById('palette-menu-splash').refresh();
 | 
						|
 | 
						|
				//if the dimentions were specified
 | 
						|
				if (dimentions && dimentions.length >= 3 && dimentions.includes('x')) {
 | 
						|
					let width = dimentions.split('x')[0];
 | 
						|
					let height = dimentions.split('x')[1];
 | 
						|
					
 | 
						|
					//create new document
 | 
						|
					Startup.newPixel(width, height);
 | 
						|
				}
 | 
						|
				//dimentions were not specified -- show splash screen with palette preselected
 | 
						|
				else {
 | 
						|
					//show splash
 | 
						|
					Dialogue.showDialogue('new-pixel', false);
 | 
						|
				}
 | 
						|
			})
 | 
						|
			//error fetching url (either palette doesn't exist, or lospec is down)
 | 
						|
			.catch((error) => {
 | 
						|
				console.warn('failed to load palette "'+paletteSlug+'"', error);
 | 
						|
				//proceed to splash screen
 | 
						|
				Dialogue.showDialogue('splash', false);
 | 
						|
			});
 | 
						|
	} 
 | 
						|
};
 | 
						|
 | 
						|
//prevent user from leaving page with unsaved data
 | 
						|
window.onbeforeunload = function() {
 | 
						|
    if (EditorState.documentCreated)
 | 
						|
        return 'You will lose your pixel if it\'s not saved!';
 | 
						|
 | 
						|
    else return;
 | 
						|
};
 | 
						|
 | 
						|
// Compatibility functions
 | 
						|
function closeCompatibilityWarning() {
 | 
						|
	document.getElementById("compatibility-warning").style.visibility =	"hidden";
 | 
						|
}
 | 
						|
 | 
						|
//check browser/version
 | 
						|
if (
 | 
						|
	(bowser.firefox && bowser.version >= 28) ||
 | 
						|
	(bowser.chrome && bowser.version >= 29) ||
 | 
						|
	(!bowser.mobile && !bowser.tablet)
 | 
						|
)
 | 
						|
	console.log("compatibility check passed");
 | 
						|
//show warning
 | 
						|
else document.getElementById("compatibility-warning").style.visibility = "visible";
 |