Compare commits
166 Commits
Author | SHA1 | Date | |
---|---|---|---|
b0e6e31b88 | |||
f756266d6c | |||
ae56e9422f | |||
771e3d0981 | |||
eff4ac3056 | |||
22e876c844 | |||
21d4857b74 | |||
8c29afbca6 | |||
8f558fb798 | |||
c56161ee91 | |||
09969253d3 | |||
3c31746785 | |||
a928a2819f | |||
172da85f15 | |||
f5a33dc39a | |||
00f0debf12 | |||
20b7eb2a3c | |||
c70e339296 | |||
6583d8f8b9 | |||
e1592a8ace | |||
5b567683a7 | |||
4d8b093941 | |||
f828471f0d | |||
92d5a4a2fe | |||
f0ed4927e8 | |||
67b66e4a10 | |||
f767d24280 | |||
27061291a3 | |||
12ac85f0f6 | |||
3525b318a6 | |||
fce9bb5727 | |||
3cc3204939 | |||
222c65a8a5 | |||
4196576c19 | |||
06e864ca0a | |||
3d1a24d5cf | |||
070003a414 | |||
7d5259acd7 | |||
2b28577813 | |||
7e1451fa8d | |||
dd1d2bf441 | |||
8aa6eff715 | |||
6f5e2f130e | |||
26f4448175 | |||
82510314a5 | |||
7fea616f0f | |||
8d26d693ff | |||
9329a5fd03 | |||
1c1f6c11ab | |||
cfe3545eec | |||
b27e6b6f66 | |||
30c3cdbcc5 | |||
392204e5c5 | |||
0dff1f7a9a | |||
6d309419d3 | |||
460688e2d5 | |||
947306a80c | |||
0b439e1b00 | |||
676cbd17ea | |||
2e3558ef08 | |||
b5234089cd | |||
5cda3e57b4 | |||
ca3bbf1c57 | |||
8081d5e232 | |||
2c75daecb1 | |||
c11e0d5d8d | |||
107751b7eb | |||
8ec47506bf | |||
6311049210 | |||
4cf6088441 | |||
00a05ee839 | |||
73badf06b0 | |||
ea679913f9 | |||
ba33533178 | |||
c32b327f23 | |||
573d7ca051 | |||
23b82b4cf0 | |||
f61682bb8d | |||
a9e04a4abd | |||
0021de35b4 | |||
1e693e4e36 | |||
a3a75b6096 | |||
2448e65ffa | |||
814db90e54 | |||
3585c2debd | |||
8b983414a6 | |||
4d53f5e3b7 | |||
9811a3a604 | |||
28912fc58f | |||
7554b3355c | |||
f7592f864b | |||
66fa71affd | |||
a0c9f2923e | |||
c9529dc65c | |||
a8f727fdcd | |||
48d1214a6d | |||
b859857b2d | |||
669d7a21cb | |||
a286d5926a | |||
92cc986fb6 | |||
da1f26291c | |||
a92e198519 | |||
91ffce0bfe | |||
acb6fd2172 | |||
055bcdb001 | |||
fe9875841a | |||
e5be581e19 | |||
6620f7e5a9 | |||
758cc6202a | |||
d96c1a9c06 | |||
551e15e67b | |||
d576c56068 | |||
fddec5c95c | |||
1abd6113a3 | |||
ef05cc4fd1 | |||
87341b049e | |||
9f31b2c7e4 | |||
3f992cbb4a | |||
0bdcf38d2f | |||
d254a9b72e | |||
d8d7f1adea | |||
d6a85aaf6f | |||
1bc85bfbca | |||
90c2ed3470 | |||
5a469202e9 | |||
8faa6db4c0 | |||
8d618fc31c | |||
e9c99a241f | |||
3209c50304 | |||
5d38804523 | |||
d17f235aee | |||
a0350ff2e8 | |||
d6351fccb3 | |||
a58b643a26 | |||
5367c75972 | |||
7d964c7fde | |||
d0acb625cf | |||
e6950e5c1a | |||
63449b2694 | |||
ed32ddc747 | |||
cbb97c60d0 | |||
ece3105893 | |||
069bfb9a90 | |||
96ab2dd781 | |||
1fe327495c | |||
089b4ea14d | |||
3853a78019 | |||
ee0a4c16aa | |||
84e26b28da | |||
cffb68c88c | |||
489298e87a | |||
dffe23746c | |||
8c629bd842 | |||
251ceae318 | |||
c7a80ebdec | |||
2280740421 | |||
c6287653f9 | |||
bd8eaa4307 | |||
c0fda032e5 | |||
744709b15b | |||
6a2f7fb58d | |||
479df8ced7 | |||
72edf47734 | |||
6b6674a04d | |||
754bc9b830 | |||
ff98670055 |
4
.gitignore
vendored
@ -23,6 +23,10 @@ diff.txt
|
||||
dest
|
||||
build/closure/closure_compiled_binary.js
|
||||
|
||||
# spriting artifacts
|
||||
src/img/icons.png
|
||||
src/css/icons.css
|
||||
|
||||
# plato report directory
|
||||
report
|
||||
|
||||
|
75
.jscsrc
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
"requireCurlyBraces": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireOperatorBeforeLineBreak": true,
|
||||
"requireCamelCaseOrUpperCaseIdentifiers": true,
|
||||
"maximumLineLength": {
|
||||
"value": 80,
|
||||
"allExcept": ["comments", "regex"]
|
||||
},
|
||||
"validateIndentation": 2,
|
||||
"validateQuoteMarks": "'",
|
||||
|
||||
"disallowMultipleLineStrings": true,
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"disallowSpaceAfterPrefixUnaryOperators": true,
|
||||
"disallowMultipleVarDecl": true,
|
||||
"disallowKeywordsOnNewLine": ["else"],
|
||||
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"switch",
|
||||
"return",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireSpaceBeforeBinaryOperators": [
|
||||
"=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=",
|
||||
"&=", "|=", "^=", "+=",
|
||||
|
||||
"+", "-", "*", "/", "%", "<<", ">>", ">>>", "&",
|
||||
"|", "^", "&&", "||", "===", "==", ">=",
|
||||
"<=", "<", ">", "!=", "!=="
|
||||
],
|
||||
"requireSpaceAfterBinaryOperators": true,
|
||||
"requireSpacesInConditionalExpression": true,
|
||||
"requireSpaceBeforeBlockStatements": true,
|
||||
"requireSpacesInForStatement": true,
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
"requireSpacesInFunctionExpression": {
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"disallowSpacesInAnonymousFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": false
|
||||
},
|
||||
"disallowSpacesInsideObjectBrackets": "all",
|
||||
"disallowSpacesInsideArrayBrackets": "all",
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
|
||||
"disallowMultipleLineBreaks": true,
|
||||
"disallowNewlineBeforeBlockStatements": true,
|
||||
"disallowKeywords": ["with"],
|
||||
"disallowSpacesInFunctionExpression": null,
|
||||
"disallowSpacesInFunctionDeclaration": null,
|
||||
"disallowSpacesInCallExpression": true,
|
||||
"disallowSpaceAfterObjectKeys": false,
|
||||
"requireSpaceBeforeObjectValues": true,
|
||||
"requireCapitalizedConstructors": true,
|
||||
"requireDotNotation": true,
|
||||
"requireSemicolons": true,
|
||||
"validateParameterSeparator": ", ",
|
||||
|
||||
"jsDoc": null
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.10
|
||||
- "4.1"
|
||||
before_install:
|
||||
- npm update -g npm
|
||||
- npm install -g grunt-cli
|
||||
@ -12,3 +12,4 @@ before_install:
|
||||
before_script:
|
||||
- phantomjs --version
|
||||
- casperjs --version
|
||||
sudo: false
|
||||
|
264
Gruntfile.js
@ -1,42 +1,50 @@
|
||||
module.exports = function(grunt) {
|
||||
var dateFormat = require('dateformat');
|
||||
var now = new Date();
|
||||
var version = '-' + dateFormat(now, "yyyy-mm-dd-hh-MM");
|
||||
|
||||
var mapToSrcFolder = function (path) {
|
||||
return "src/" + path;
|
||||
// Update this variable if you don't want or can't serve on localhost
|
||||
var hostname = 'localhost';
|
||||
|
||||
var PORT = {
|
||||
PROD : 9001,
|
||||
DEV : 9901,
|
||||
TEST : 9991
|
||||
};
|
||||
|
||||
var piskelScripts = require('./src/piskel-script-list.js').scripts.map(mapToSrcFolder).filter(function (path) {
|
||||
var DEV_MODE = '?debug';
|
||||
|
||||
// create a version based on the build timestamp
|
||||
var dateFormat = require('dateformat');
|
||||
var version = '-' + dateFormat(new Date(), "yyyy-mm-dd-hh-MM");
|
||||
|
||||
/**
|
||||
* Helper to prefix all strings in provided array with the provided path
|
||||
*/
|
||||
var prefixPaths = function (paths, prefix) {
|
||||
return paths.map(function (path) {
|
||||
return prefix + path;
|
||||
});
|
||||
};
|
||||
|
||||
// get the list of scripts paths to include
|
||||
var scriptPaths = require('./src/piskel-script-list.js').scripts;
|
||||
var piskelScripts = prefixPaths(scriptPaths, "src/").filter(function (path) {
|
||||
return path.indexOf('devtools') === -1;
|
||||
});
|
||||
var piskelStyles = require('./src/piskel-style-list.js').styles.map(mapToSrcFolder);
|
||||
|
||||
var mapToCasperFolder = function (path) {
|
||||
return "test/casperjs/" + path;
|
||||
};
|
||||
// get the list of styles paths to include
|
||||
var stylePaths = require('./src/piskel-style-list.js').styles;
|
||||
var piskelStyles = prefixPaths(stylePaths, "src/");
|
||||
|
||||
var casperEnvironments = {
|
||||
'local' : {
|
||||
suite : './test/casperjs/LocalTestSuite.js',
|
||||
delay : 50
|
||||
},
|
||||
'travis' : {
|
||||
suite : './test/casperjs/TravisTestSuite.js',
|
||||
delay : 10000
|
||||
}
|
||||
};
|
||||
var getCasperConfig = function (suiteName, delay, host) {
|
||||
var testPaths = require('./test/casperjs/' + suiteName).tests;
|
||||
var tests = prefixPaths(testPaths, "test/casperjs/");
|
||||
|
||||
var getCasperConfig = function (env) {
|
||||
var conf = casperEnvironments[env];
|
||||
var tests = require(conf.suite).tests.map(mapToCasperFolder);
|
||||
return {
|
||||
filesSrc : tests,
|
||||
options : {
|
||||
args : {
|
||||
baseUrl : 'http://localhost:' + '<%= express.test.options.port %>/',
|
||||
mode : '?debug',
|
||||
delay : conf.delay
|
||||
baseUrl : 'http://' + host + ':' + PORT.TEST,
|
||||
mode : DEV_MODE,
|
||||
delay : delay
|
||||
},
|
||||
async : false,
|
||||
direct : false,
|
||||
@ -47,19 +55,16 @@ module.exports = function(grunt) {
|
||||
};
|
||||
};
|
||||
|
||||
var getExpressConfig = function (source, port, host) {
|
||||
var bases;
|
||||
if (typeof source === 'string') {
|
||||
bases = [source];
|
||||
} else if (Array.isArray(source)) {
|
||||
bases = source;
|
||||
var getConnectConfig = function (base, port, host) {
|
||||
if (typeof base === 'string') {
|
||||
base = [base];
|
||||
}
|
||||
|
||||
return {
|
||||
options: {
|
||||
port: port,
|
||||
hostname : host || 'localhost',
|
||||
bases: bases
|
||||
hostname : host,
|
||||
base: base
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -69,17 +74,26 @@ module.exports = function(grunt) {
|
||||
|
||||
grunt.initConfig({
|
||||
clean: {
|
||||
before: ['dest']
|
||||
all: ['dest', 'src/img/icons.png', 'src/css/icons.css'],
|
||||
prod: ['dest/prod', 'dest/tmp'],
|
||||
desktop: ['dest/desktop', 'dest/tmp'],
|
||||
dev: ['dest/dev', 'dest/tmp']
|
||||
},
|
||||
|
||||
/**
|
||||
* STYLE CHECKS
|
||||
*/
|
||||
|
||||
leadingIndent : {
|
||||
options: {
|
||||
indentation : "spaces"
|
||||
},
|
||||
css : ['src/css/**/*.css']
|
||||
},
|
||||
|
||||
jscs : {
|
||||
options : {
|
||||
"preset": "google",
|
||||
"config": ".jscsrc",
|
||||
"maximumLineLength": 120,
|
||||
"requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties",
|
||||
"validateQuoteMarks": { "mark": "'", "escape": true },
|
||||
@ -88,6 +102,7 @@ module.exports = function(grunt) {
|
||||
},
|
||||
js : [ 'src/js/**/*.js' , '!src/js/**/lib/**/*.js' ]
|
||||
},
|
||||
|
||||
jshint: {
|
||||
options: {
|
||||
undef : true,
|
||||
@ -104,86 +119,103 @@ module.exports = function(grunt) {
|
||||
'!src/js/**/lib/**/*.js' // Exclude lib folder (note the leading !)
|
||||
]
|
||||
},
|
||||
express: {
|
||||
test: getExpressConfig(['src', 'test'], 9991),
|
||||
regular: getExpressConfig('dest', 9001),
|
||||
debug: getExpressConfig(['src', 'test'], 9901)
|
||||
|
||||
/**
|
||||
* SERVERS, BROWSER LAUNCHERS
|
||||
*/
|
||||
|
||||
connect: {
|
||||
prod: getConnectConfig('dest/prod', PORT.PROD, hostname),
|
||||
test: getConnectConfig(['dest/dev', 'test'], PORT.TEST, hostname),
|
||||
dev: getConnectConfig(['dest/dev', 'test'], PORT.DEV, hostname)
|
||||
},
|
||||
|
||||
open : {
|
||||
regular : {
|
||||
path : 'http://localhost:9001/'
|
||||
prod : {
|
||||
path : 'http://' + hostname + ':' + PORT.PROD + '/'
|
||||
},
|
||||
debug : {
|
||||
path : 'http://localhost:9901/?debug'
|
||||
dev : {
|
||||
path : 'http://' + hostname + ':' + PORT.DEV + '/' + DEV_MODE
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
scripts: {
|
||||
prod: {
|
||||
files: ['src/**/*.*'],
|
||||
tasks: ['merge'],
|
||||
tasks: ['build'],
|
||||
options: {
|
||||
spawn: false
|
||||
}
|
||||
},
|
||||
dev: {
|
||||
files: ['src/**/*.*'],
|
||||
tasks: ['build-dev'],
|
||||
options: {
|
||||
spawn: false
|
||||
}
|
||||
}
|
||||
},
|
||||
ghost : {
|
||||
'travis' : getCasperConfig('travis'),
|
||||
'local' : getCasperConfig('local')
|
||||
|
||||
/**
|
||||
* BUILD STEPS
|
||||
*/
|
||||
|
||||
sprite:{
|
||||
all : {
|
||||
src: 'src/img/icons/**/*.png',
|
||||
dest: 'src/img/icons.png',
|
||||
destCss: 'src/css/icons.css'
|
||||
}
|
||||
},
|
||||
|
||||
concat : {
|
||||
js : {
|
||||
options : {
|
||||
separator : ';'
|
||||
},
|
||||
src : piskelScripts,
|
||||
dest : 'dest/js/piskel-packaged' + version + '.js'
|
||||
dest : 'dest/prod/js/piskel-packaged' + version + '.js'
|
||||
},
|
||||
css : {
|
||||
src : piskelStyles,
|
||||
dest : 'dest/css/piskel-style-packaged' + version + '.css'
|
||||
dest : 'dest/prod/css/piskel-style-packaged' + version + '.css'
|
||||
}
|
||||
},
|
||||
|
||||
uglify : {
|
||||
options : {
|
||||
mangle : true
|
||||
},
|
||||
js : {
|
||||
files : {
|
||||
'dest/js/piskel-packaged-min.js' : ['dest/js/piskel-packaged' + version + '.js']
|
||||
'dest/tmp/js/piskel-packaged-min.js' : ['dest/prod/js/piskel-packaged' + version + '.js']
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
includereplace: {
|
||||
all: {
|
||||
src: 'src/index.html',
|
||||
dest: 'dest/tmp/index.html',
|
||||
options : {
|
||||
globals : {
|
||||
'version' : version
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
replace: {
|
||||
main: {
|
||||
// main-partial.html is used when embedded in piskelapp.com
|
||||
mainPartial: {
|
||||
options: {
|
||||
patterns: [
|
||||
{
|
||||
match: 'version',
|
||||
replacement: version
|
||||
}
|
||||
]
|
||||
},
|
||||
files: [
|
||||
{src: ['src/piskel-boot.js'], dest: 'dest/piskel-boot.js'}
|
||||
]
|
||||
},
|
||||
editor: {
|
||||
options: {
|
||||
patterns: [
|
||||
{
|
||||
match: /templates\//g,
|
||||
replacement: "../templates"+version+"/"
|
||||
},{
|
||||
match: /piskel-boot.js/g,
|
||||
replacement: "../piskel-boot"+version+".js"
|
||||
},{
|
||||
patterns: [{
|
||||
match: /^(.|[\r\n])*<!--body-main-start-->/,
|
||||
replacement: "",
|
||||
replacement: "{% raw %}",
|
||||
description : "Remove everything before body-main-start comment"
|
||||
},{
|
||||
match: /<!--body-main-end-->(.|[\r\n])*$/,
|
||||
replacement: "",
|
||||
replacement: "{% endraw %}",
|
||||
description : "Remove everything after body-main-end comment"
|
||||
},{
|
||||
match: /([\r\n]) /g,
|
||||
@ -193,30 +225,57 @@ module.exports = function(grunt) {
|
||||
]
|
||||
},
|
||||
files: [
|
||||
{src: ['src/index.html'], dest: 'dest/piskelapp-partials/main-partial.html'}
|
||||
// src/index.html should already have been moved by the includereplace task
|
||||
{src: ['dest/tmp/index.html'], dest: 'dest/prod/piskelapp-partials/main-partial.html'}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
copy: {
|
||||
main: {
|
||||
prod: {
|
||||
files: [
|
||||
{src: ['dest/js/piskel-packaged-min.js'], dest: 'dest/js/piskel-packaged-min' + version + '.js'},
|
||||
{src: ['dest/piskel-boot.js'], dest: 'dest/piskel-boot' + version + '.js'},
|
||||
{src: ['src/logo.png'], dest: 'dest/logo.png'},
|
||||
{src: ['src/js/lib/iframeLoader-0.1.0.js'], dest: 'dest/js/lib/iframeLoader-0.1.0.js'},
|
||||
{src: ['src/js/lib/gif/gif.ie.worker.js'], dest: 'dest/js/lib/gif/gif.ie.worker.js'},
|
||||
{expand: true, src: ['img/**'], cwd: 'src/', dest: 'dest/', filter: 'isFile'},
|
||||
{expand: true, src: ['css/fonts/**'], cwd: 'src/', dest: 'dest/', filter: 'isFile'},
|
||||
{expand: true, src: ['**/*.html'], cwd: 'src/', dest: 'dest/', filter: 'isFile'}
|
||||
// dest/js/piskel-packaged-min.js should have been created by the uglify task
|
||||
{src: ['dest/tmp/js/piskel-packaged-min.js'], dest: 'dest/prod/js/piskel-packaged-min' + version + '.js'},
|
||||
{src: ['dest/tmp/index.html'], dest: 'dest/prod/index.html'},
|
||||
{src: ['src/logo.png'], dest: 'dest/prod/logo.png'},
|
||||
{src: ['src/js/lib/gif/gif.ie.worker.js'], dest: 'dest/prod/js/lib/gif/gif.ie.worker.js'},
|
||||
{expand: true, src: ['img/**'], cwd: 'src/', dest: 'dest/prod/', filter: 'isFile'},
|
||||
{expand: true, src: ['css/fonts/**'], cwd: 'src/', dest: 'dest/prod/', filter: 'isFile'}
|
||||
]
|
||||
},
|
||||
dev: {
|
||||
files: [
|
||||
// in dev copy everything to dest/dev
|
||||
{src: ['dest/tmp/index.html'], dest: 'dest/dev/index.html'},
|
||||
{src: ['src/piskel-script-list.js'], dest: 'dest/dev/piskel-script-list.js'},
|
||||
{src: ['src/piskel-style-list.js'], dest: 'dest/dev/piskel-style-list.js'},
|
||||
{expand: true, src: ['js/**'], cwd: 'src/', dest: 'dest/dev/', filter: 'isFile'},
|
||||
{expand: true, src: ['css/**'], cwd: 'src/', dest: 'dest/dev/', filter: 'isFile'},
|
||||
{expand: true, src: ['img/**'], cwd: 'src/', dest: 'dest/dev/', filter: 'isFile'},
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* TESTING
|
||||
*/
|
||||
|
||||
karma: {
|
||||
unit: {
|
||||
configFile: 'karma.conf.js'
|
||||
}
|
||||
},
|
||||
nodewebkit: {
|
||||
|
||||
ghost : {
|
||||
'travis' : getCasperConfig('TravisTestSuite.js', 10000, hostname),
|
||||
'local' : getCasperConfig('LocalTestSuite.js', 50, hostname)
|
||||
},
|
||||
|
||||
/**
|
||||
* DESKTOP BUILDS
|
||||
*/
|
||||
|
||||
nwjs: {
|
||||
windows : {
|
||||
options: {
|
||||
version : "0.11.5",
|
||||
@ -225,15 +284,16 @@ module.exports = function(grunt) {
|
||||
linux32: true,
|
||||
linux64: true
|
||||
},
|
||||
src: ['./dest/**/*', "./package.json", "!./dest/desktop/"]
|
||||
src: ['./dest/prod/**/*', "./package.json", "!./dest/desktop/"]
|
||||
},
|
||||
macos : {
|
||||
options: {
|
||||
platforms : ['osx64'],
|
||||
// had performance issues with 0.11.5 on mac os, need to test new versions/new hardware
|
||||
version : "0.10.5",
|
||||
build_dir: './dest/desktop/'
|
||||
},
|
||||
src: ['./dest/**/*', "./package.json", "!./dest/desktop/"]
|
||||
src: ['./dest/prod/**/*', "./package.json", "!./dest/desktop/"]
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -245,27 +305,31 @@ module.exports = function(grunt) {
|
||||
grunt.registerTask('unit-test', ['karma']);
|
||||
|
||||
// Validate & Test
|
||||
grunt.registerTask('test-travis', ['lint', 'unit-test', 'express:test', 'ghost:travis']);
|
||||
grunt.registerTask('test-travis', ['lint', 'unit-test', 'build-dev', 'connect:test', 'ghost:travis']);
|
||||
// Validate & Test (faster version) will NOT work on travis !!
|
||||
grunt.registerTask('test-local', ['lint', 'unit-test', 'express:test', 'ghost:local']);
|
||||
grunt.registerTask('test-local-nolint', ['unit-test', 'express:test', 'ghost:local']);
|
||||
grunt.registerTask('test-local', ['lint', 'unit-test', 'build-dev', 'connect:test', 'ghost:local']);
|
||||
grunt.registerTask('test-local-nolint', ['unit-test', 'build-dev', 'connect:test', 'ghost:local']);
|
||||
|
||||
grunt.registerTask('test', ['test-travis']);
|
||||
grunt.registerTask('precommit', ['test-local']);
|
||||
|
||||
grunt.registerTask('build', ['concat:js', 'concat:css', 'uglify', 'replace:main', 'replace:editor', 'copy']);
|
||||
grunt.registerTask('build-index.html', ['includereplace']);
|
||||
grunt.registerTask('merge-statics', ['concat:js', 'concat:css', 'uglify']);
|
||||
grunt.registerTask('build', ['clean:prod', 'sprite', 'merge-statics', 'build-index.html', 'replace', 'copy:prod']);
|
||||
grunt.registerTask('build-dev', ['clean:dev', 'sprite', 'build-index.html', 'copy:dev']);
|
||||
|
||||
// Validate & Build
|
||||
grunt.registerTask('default', ['clean:before', 'lint', 'build']);
|
||||
grunt.registerTask('default', ['lint', 'build']);
|
||||
|
||||
// Build stand alone app with nodewebkit
|
||||
grunt.registerTask('desktop', ['default', 'nodewebkit:windows']);
|
||||
grunt.registerTask('desktop-mac', ['default', 'nodewebkit:macos']);
|
||||
grunt.registerTask('desktop', ['clean:desktop', 'default', 'nwjs:windows']);
|
||||
grunt.registerTask('desktop-mac', ['clean:desktop', 'default', 'nwjs:macos']);
|
||||
|
||||
// Start webserver and watch for changes
|
||||
grunt.registerTask('serve', ['build', 'express:regular', 'open:regular', 'express-keepalive', 'watch']);
|
||||
|
||||
grunt.registerTask('serve', ['build', 'connect:prod', 'open:prod', 'watch:prod']);
|
||||
// Start webserver on src folder, in debug mode
|
||||
grunt.registerTask('serve-debug', ['express:debug', 'open:debug', 'express-keepalive']);
|
||||
grunt.registerTask('play', ['serve-debug']);
|
||||
grunt.registerTask('serve-dev', ['build-dev', 'connect:dev', 'open:dev', 'watch:dev']);
|
||||
|
||||
grunt.registerTask('serve-debug', ['serve-dev']);
|
||||
grunt.registerTask('play', ['serve-dev']);
|
||||
};
|
||||
|
1
misc/gif-tests/low-colors-no-transparency.piskel
Normal file
@ -0,0 +1 @@
|
||||
{"modelVersion":2,"piskel":{"name":"low-colors-no-transparency","description":"","fps":12,"height":60,"width":60,"layers":["{\"name\":\"Layer 1\",\"frameCount\":2,\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAA8CAYAAACtrX6oAAABZUlEQVR4nO3cwRHCMAxE0RSUGlIF1TBDMTRAi1BCsCVZK/kf/n0n7xr5+FzXd6fe57lVR/YHBxhggAEGGGCA9yj7gwMMMMAAAwwwwHsEcPOWAR/Px22dgM/367bywP+grsbORl2NHQJsgY2GVoONhnYH9sSNQFbGjUB2A46AjYBWho2AdgFegeuFXAXXC9kMvBLXA7kSrgeyCTgD14pcDdeKDDDAergW5Iq4FuQp4GxYC3JV3FlkgAHWxZ1Brow7gwwwwACrFQacDemBXB13FBlggAFWDGCAAQYYYNkABhhggAGWLQRYFXlk/wiwKvLIfoABBlitUGA15NHto8BqyKPbAQZYF3lm9wywCvLMbv6qLII8uxlggPWQLXstwFnIlr3cJokjW7dyXSiM7LGT+2BBaM99XPiLIXtv440OEeioTbyyk4i9YgfvZDUP4OYB3DyAmwdw8wBuHsDNA7h5ADcP4Ob9AHU/4CXfXtXyAAAAAElFTkSuQmCC\"}"],"expanded":false}}
|
1
misc/gif-tests/low-colors-with-transparency.piskel
Normal file
@ -0,0 +1 @@
|
||||
{"modelVersion":2,"piskel":{"name":"low-colors-with-transparency","description":"","fps":12,"height":60,"width":60,"layers":["{\"name\":\"Layer 1\",\"frameCount\":2,\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAA8CAYAAACtrX6oAAABOUlEQVR4nO3bQWoDQQxEUR3Ix8lpAj5MTmovQsNgEmwYdZVG+h9q3+KtO4KIiIiIiIiIiIhoUN9fj7dr1O3n/ng39xvP9wlqI+xPUHtgn4G9IPQZ2OtBZ+JeADkTtzbyDtjC0Dtg60IrcAshK3DrICtxCyArcf3IDlwjsgPXiwxwY2AnrgHZiatHdsOKkd2wemQ3KsAbc4OKkd2gemQ3JsAAZ+bG1AK7IcXIbkg9shsRYIAzcyMCDHBybkSAAc7MjQgwwMm5EQEGODM3oh44oibyxtyQWtwIgAts570AF9jOe39zg4pwV25QLW4EwO2BI2ogC3PDanFXQ3BXs3AjAG4PHMHPhta4qyG4q1m4qyG4q1m4x5rDvjYH9tgQ3NUs3GPNYV+bA/tXTVH/awYqERERERERERFRVk8BxgukicHldgAAAABJRU5ErkJggg==\"}"],"expanded":false}}
|
1
misc/gif-tests/too-many-colors-no-transparency.piskel
Normal file
1
misc/gif-tests/too-many-colors-with-transparency.piskel
Normal file
72
misc/icons/SVG/lasso.svg
Normal file
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="224.38731"
|
||||
height="177.96065"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="New document 1">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.175"
|
||||
inkscape:cx="-1542.2107"
|
||||
inkscape:cy="-1434.6156"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1148"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-212.79148,-238.81242)">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:30, 30;stroke-dashoffset:0"
|
||||
d="m 429.0234,294.50503 c 0,26.68038 -49.13123,48.3091 -109.73768,48.3091 -60.60644,0 -110.61221,-39.48861 -96.16624,-73.3091 19.3392,-45.27639 60.80353,-4.92189 116.16624,-16.88052 101.16819,-21.85285 89.73768,15.20015 89.73768,41.88052 z"
|
||||
id="path3761"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 309.32357,338.9218 c 0,0 8.97064,20.56224 -30.34229,45.31736 -39.31294,24.75512 -40.99309,30.13484 -40.99309,30.13484"
|
||||
id="path3764"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="czc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 594 B After Width: | Height: | Size: 594 B |
Before Width: | Height: | Size: 720 B After Width: | Height: | Size: 720 B |
BIN
misc/icons/source/tool-colorpicker-big.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
@ -6,7 +6,7 @@ SETLOCAL
|
||||
SET PISKELAPP_PATH="C:\Development\git\piskel-website"
|
||||
|
||||
ECHO "Copying files to piskelapp"
|
||||
XCOPY "%PISKEL_PATH%\dest" "%PISKELAPP_PATH%\static\editor" /e /i /h /y
|
||||
XCOPY "%PISKEL_PATH%\dest\prod" "%PISKELAPP_PATH%\static\editor" /e /i /h /y
|
||||
|
||||
ECHO "Delete previous partial"
|
||||
DEL "%PISKELAPP_PATH%\templates\editor\main-partial.html"
|
||||
|
44
package.json
@ -1,9 +1,9 @@
|
||||
{
|
||||
"author": "Julian Descottes, Vincent Renaudin",
|
||||
"name": "piskel",
|
||||
"main": "./dest/index.html",
|
||||
"main": "./dest/prod/index.html",
|
||||
"description": "Web based 2d animations editor",
|
||||
"version": "0.5.2",
|
||||
"version": "0.6.0",
|
||||
"homepage": "http://github.com/juliandescottes/piskel",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -14,27 +14,31 @@
|
||||
"start": "nodewebkit"
|
||||
},
|
||||
"devDependencies": {
|
||||
"dateformat": "^1.0.11",
|
||||
"grunt": "~0.4.5",
|
||||
"grunt-contrib-clean": "^0.6.0",
|
||||
"grunt-contrib-concat": "^0.5.1",
|
||||
"grunt-contrib-copy": "^0.8.0",
|
||||
"grunt-contrib-jshint": "^0.11.1",
|
||||
"grunt-contrib-uglify": "^0.9.1",
|
||||
"dateformat": "1.0.11",
|
||||
"grunt": "0.4.5",
|
||||
"grunt-contrib-clean": "0.7.0",
|
||||
"grunt-contrib-concat": "0.5.1",
|
||||
"grunt-contrib-connect": "0.11.2",
|
||||
"grunt-contrib-copy": "0.8.0",
|
||||
"grunt-contrib-jshint": "0.11.1",
|
||||
"grunt-contrib-uglify": "0.11.0",
|
||||
"grunt-contrib-watch": "0.6.1",
|
||||
"grunt-express": "1.4.1",
|
||||
"grunt-ghost": "1.1.0",
|
||||
"grunt-jscs": "^1.6.0",
|
||||
"grunt-karma": "^0.10.1",
|
||||
"grunt-leading-indent": "^0.2.0",
|
||||
"grunt-node-webkit-builder": "^1.0.2",
|
||||
"grunt-include-replace": "3.2.0",
|
||||
"grunt-jscs": "2.5.0",
|
||||
"grunt-karma": "0.12.1",
|
||||
"grunt-leading-indent": "0.2.0",
|
||||
"grunt-nw-builder": "2.0.0",
|
||||
"grunt-open": "0.2.3",
|
||||
"grunt-replace": "^0.8.0",
|
||||
"karma": "0.12.31",
|
||||
"karma-chrome-launcher": "^0.1.4",
|
||||
"karma-jasmine": "^0.3.5",
|
||||
"karma-phantomjs-launcher": "^0.1.4",
|
||||
"load-grunt-tasks": "^3.1.0"
|
||||
"grunt-replace": "0.11.0",
|
||||
"grunt-spritesmith": "6.1.0",
|
||||
"jasmine-core": "2.1.0",
|
||||
"karma": "0.13.15",
|
||||
"karma-chrome-launcher": "0.2.2",
|
||||
"karma-jasmine": "0.3.5",
|
||||
"karma-phantomjs-launcher": "0.2.1",
|
||||
"load-grunt-tasks": "3.1.0",
|
||||
"phantomjs": "1.9.19"
|
||||
},
|
||||
"window": {
|
||||
"title": "Piskel",
|
||||
|
3
src/css/animations.css
Normal file
@ -0,0 +1,3 @@
|
||||
@keyframes fade {
|
||||
50% { opacity: 0.5; }
|
||||
}
|
@ -1,110 +0,0 @@
|
||||
.cheatsheet-link {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
left: 10px;
|
||||
|
||||
padding: 1px 0 0 45px;
|
||||
color : gold;
|
||||
font-weight: bold;
|
||||
font-size : 1.25em;
|
||||
line-height: 20px;
|
||||
|
||||
cursor : pointer;
|
||||
|
||||
background-image:url('../img/keyboard.png');
|
||||
background-size:35px 20px;
|
||||
background-repeat:no-repeat;
|
||||
opacity: 0.5;
|
||||
z-index: 11000;
|
||||
transition : opacity 0.3s;
|
||||
}
|
||||
|
||||
.cheatsheet-link:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#cheatsheet-wrapper {
|
||||
position: absolute;
|
||||
z-index: 10000;
|
||||
|
||||
top: 50px;
|
||||
right: 50px;
|
||||
bottom: 50px;
|
||||
left: 50px;
|
||||
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing : border-box;
|
||||
|
||||
color: white;
|
||||
}
|
||||
|
||||
.cheatsheet-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing : border-box;
|
||||
|
||||
padding: 20px 3%;
|
||||
border-radius: 3px;
|
||||
background: rgba(0,0,0,0.9);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.cheatsheet-container .cheatsheet-title {
|
||||
font-size:24px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.cheatsheet-container .cheatsheet-title:nth-of-type(2) {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.cheatsheet-section {
|
||||
float: left;
|
||||
width : 33%;
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut {
|
||||
overflow: hidden;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.cheatsheet-icon.tool-icon {
|
||||
float: left;
|
||||
display: inline-block;
|
||||
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin: 0 20px 0 0;
|
||||
|
||||
background-size: 20px 20px;
|
||||
background-position: 5px 5px;
|
||||
}
|
||||
|
||||
.cheatsheet-description {
|
||||
font-family:Courier;
|
||||
color: white;
|
||||
font-size : 13px;
|
||||
margin-left: 20px;
|
||||
line-height : 30px;
|
||||
}
|
||||
|
||||
.cheatsheet-key {
|
||||
display : inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
|
||||
border : 1px solid gold;
|
||||
border-radius: 2px;
|
||||
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing : border-box;
|
||||
|
||||
text-align: center;
|
||||
font-family:Courier;
|
||||
font-weight: bold;
|
||||
font-size : 18px;
|
||||
color: gold;
|
||||
}
|
227
src/css/dialogs-cheatsheet.css
Normal file
@ -0,0 +1,227 @@
|
||||
.cheatsheet-link {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
left: 10px;
|
||||
|
||||
color : gold;
|
||||
font-weight: bold;
|
||||
font-size : 1.25em;
|
||||
line-height: 20px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
opacity: 0.5;
|
||||
z-index: 11000;
|
||||
transition : opacity 0.3s;
|
||||
}
|
||||
|
||||
.cheatsheet-link:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.cheatsheet-container {
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
|
||||
bottom: 46px;
|
||||
padding: 20px 3%;
|
||||
border-radius: 3px;
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.cheatsheet-container .cheatsheet-title {
|
||||
font-size:24px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.cheatsheet-container .cheatsheet-title:nth-of-type(1) {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.cheatsheet-section {
|
||||
box-sizing: border-box;
|
||||
float: left;
|
||||
|
||||
vertical-align: top;
|
||||
padding : 0 20px 20px 20px;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
.cheatsheet-boxes {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
|
||||
float: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1300px) {
|
||||
.cheatsheet-container > div {
|
||||
width: 33%;
|
||||
}
|
||||
.cheatsheet-boxes {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut {
|
||||
overflow: hidden;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.cheatsheet-icon.tool-icon {
|
||||
float: left;
|
||||
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin: 0 10px 0 0;
|
||||
background-size: 30px 30px;
|
||||
}
|
||||
|
||||
.cheatsheet-description {
|
||||
color: white;
|
||||
font-size : 14px;
|
||||
margin-left: 10px;
|
||||
line-height : 30px;
|
||||
}
|
||||
|
||||
.cheatsheet-key {
|
||||
box-sizing: border-box;
|
||||
display : inline-block;
|
||||
height: 30px;
|
||||
line-height: 26px;
|
||||
padding: 0 10px;
|
||||
|
||||
border : 2px solid white;
|
||||
border-radius: 2px;
|
||||
|
||||
text-align: center;
|
||||
font-family:Courier;
|
||||
font-weight: bold;
|
||||
font-size : 18px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.cheatsheet-shorcut-conflict .cheatsheet-key {
|
||||
border-color: red;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut-editable {
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut-editable .cheatsheet-key {
|
||||
border-color: gold;
|
||||
color: gold;
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut-editing .cheatsheet-key {
|
||||
animation: fade .5s infinite;
|
||||
}
|
||||
|
||||
.cheatsheet-shortcut-undefined .cheatsheet-key {
|
||||
border-color: red;
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*Cheatsheet actions*/
|
||||
|
||||
.cheatsheet-actions {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
|
||||
bottom : 0;
|
||||
left : 0;
|
||||
right : 0;
|
||||
height : 46px;
|
||||
|
||||
padding : 10px;
|
||||
overflow: hidden;
|
||||
|
||||
background-color : gold;
|
||||
}
|
||||
|
||||
.cheatsheet-helptext {
|
||||
font-size: 14px;
|
||||
height : 26px;
|
||||
line-height : 26px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.cheatsheet-helptext-tooltip {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.cheatsheet-helptext-tooltip-item {
|
||||
line-height: 0.9em;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.cheatsheet-button {
|
||||
position: absolute;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
|
||||
.cheatsheet-icon-tool-circle {
|
||||
background-image: url(../img/icons/tools/tool-circle.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-colorpicker {
|
||||
background-image: url(../img/icons/tools/tool-colorpicker.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-colorswap {
|
||||
background-image: url(../img/icons/tools/tool-colorswap.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-dithering {
|
||||
background-image: url(../img/icons/tools/tool-dithering.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-eraser {
|
||||
background-image: url(../img/icons/tools/tool-eraser.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-lasso-select {
|
||||
background-image: url(../img/icons/tools/tool-lasso-select.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-lighten {
|
||||
background-image: url(../img/icons/tools/tool-lighten.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-move {
|
||||
background-image: url(../img/icons/tools/tool-move.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-paint-bucket {
|
||||
background-image: url(../img/icons/tools/tool-paint-bucket.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-pen {
|
||||
background-image: url(../img/icons/tools/tool-pen.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-rectangle-select {
|
||||
background-image: url(../img/icons/tools/tool-rectangle-select.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-rectangle {
|
||||
background-image: url(../img/icons/tools/tool-rectangle.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-shape-select {
|
||||
background-image: url(../img/icons/tools/tool-shape-select.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-stroke {
|
||||
background-image: url(../img/icons/tools/tool-stroke.png);
|
||||
}
|
||||
|
||||
.cheatsheet-icon-tool-vertical-mirror-pen {
|
||||
background-image: url(../img/icons/tools/tool-vertical-mirror-pen.png);
|
||||
}
|
@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
#dialog-container-wrapper.animated {
|
||||
transition: opacity 0.5s;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
#dialog-container-wrapper.show {
|
||||
@ -44,10 +44,6 @@
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.animated #dialog-container {
|
||||
transition:margin-top 0.5s;
|
||||
}
|
||||
|
||||
.show #dialog-container {
|
||||
margin-top: 0;
|
||||
}
|
||||
@ -70,6 +66,14 @@
|
||||
position : relative;
|
||||
}
|
||||
|
||||
.dialog-content {
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dialog-head {
|
||||
width: 100%;
|
||||
background: gold;
|
||||
@ -77,6 +81,7 @@
|
||||
padding: 10px;
|
||||
color: black;
|
||||
font-size: 1.8em;
|
||||
height: 45px;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
@ -55,24 +55,28 @@
|
||||
}
|
||||
|
||||
.add-frame-action {
|
||||
border: #888 solid 4px;
|
||||
font-size: 13px;
|
||||
color: #888;
|
||||
cursor: pointer;
|
||||
padding: 6px 0;
|
||||
border-radius: 4px;
|
||||
margin-top: 8px;
|
||||
background-image: url(../img/plus.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 3px 7px;
|
||||
background-size: 26px 26px;
|
||||
text-indent: 18px;
|
||||
padding: 6px 0;
|
||||
overflow: hidden;
|
||||
width: 96px;
|
||||
|
||||
border: #888 solid 3px;
|
||||
border-radius: 4px;
|
||||
|
||||
color: #888;
|
||||
background-color: #222;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.add-frame-action-icon {
|
||||
margin: 3px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.add-frame-action .label {
|
||||
width: 80px;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.add-frame-action:hover {
|
||||
@ -129,15 +133,9 @@
|
||||
}
|
||||
|
||||
.preview-tile .tile-overlay.delete-frame-action {
|
||||
background-image: url(../img/garbage.png);
|
||||
background-repeat: no-repeat;
|
||||
top: 0;
|
||||
right: 0;
|
||||
border-bottom-left-radius: 3px;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
background-position: 5px 5px;
|
||||
background-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@ -145,10 +143,6 @@
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
border-bottom-left-radius: 3px;
|
||||
background-image: url(../img/duplicate.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 5px 5px;
|
||||
background-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@ -156,10 +150,6 @@
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border-top-right-radius: 3px;
|
||||
background-image: url(../img/dragndrop.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 5px 5px;
|
||||
background-size: 20px;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
|
@ -1,24 +0,0 @@
|
||||
.action-icon {
|
||||
cursor: pointer;
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50%;
|
||||
}
|
||||
|
||||
.edit-icon {
|
||||
background-image: url('../img/tools/pen.png');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.merge-icon {
|
||||
background-image: url('../img/merge-icon.png');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.plus-icon {
|
||||
font-size:15px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.delete-icon {
|
||||
}
|
@ -103,22 +103,22 @@
|
||||
|
||||
.light-picker-background,
|
||||
.light-canvas-background .canvas-background {
|
||||
background: url(../img/canvas_background/light_canvas_background.png) repeat;
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABlBMVEXf39////8zI3BgAAAAHklEQVR4AWNghAIGCMDgjwgFCDDSw2M0PSCD0fQAACRcAgF4ciGUAAAAAElFTkSuQmCC') repeat;
|
||||
}
|
||||
|
||||
.medium-picker-background,
|
||||
.medium-canvas-background .canvas-background {
|
||||
background: url(../img/canvas_background/medium_canvas_background.png) repeat;
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABlBMVEW6urr///82MBGFAAAAHUlEQVR4AWOAAUYoQOePEAUj3v9oYDQ9gMBoegAAJFwCAbLaTIMAAAAASUVORK5CYII=') repeat;
|
||||
}
|
||||
|
||||
.lowcont-medium-picker-background,
|
||||
.lowcont-medium-canvas-background .canvas-background {
|
||||
background: url(../img/canvas_background/lowcont_medium_canvas_background.png) repeat;
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABlBMVEXV1dXb29tFGkCIAAAAHklEQVR4AWNghAIGCMDgjwgFCDDSw2M0PSCD0fQAACRcAgF4ciGUAAAAAElFTkSuQmCC') repeat;
|
||||
}
|
||||
|
||||
.lowcont-dark-picker-background,
|
||||
.lowcont-dark-canvas-background .canvas-background {
|
||||
background: url(../img/canvas_background/lowcont_dark_canvas_background.png) repeat;
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABlBMVEVMTExVVVUnhsEkAAAAHUlEQVR4AWOAAUYoQOePEAUj3v9oYDQ9gMBoegAAJFwCAbLaTIMAAAAASUVORK5CYII=') repeat;
|
||||
}
|
||||
|
||||
.canvas.onion-skin-canvas {
|
||||
|
49
src/css/pensize.css
Normal file
@ -0,0 +1,49 @@
|
||||
.pen-size-container {
|
||||
overflow: hidden;
|
||||
padding: 5px 5px;
|
||||
}
|
||||
|
||||
.pen-size-option {
|
||||
float: left;
|
||||
box-sizing: border-box;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-right: 2px;
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
border-color: #444;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pen-size-option[data-size='1'] {
|
||||
padding: 6px;
|
||||
}
|
||||
.pen-size-option[data-size='2'] {
|
||||
padding: 5px;
|
||||
}
|
||||
.pen-size-option[data-size='3'] {
|
||||
padding: 4px;
|
||||
}
|
||||
.pen-size-option[data-size='4'] {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.pen-size-option:before {
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: white;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pen-size-option:hover {
|
||||
border-color: #888;
|
||||
}
|
||||
|
||||
.pen-size-option.selected:before {
|
||||
background-color: gold;
|
||||
}
|
||||
|
||||
.pen-size-option.selected {
|
||||
border-color: gold;
|
||||
}
|
@ -26,6 +26,11 @@ input[type="submit"] {
|
||||
font-family: Arial;
|
||||
}
|
||||
|
||||
/* IE11 applies a big default margin for range inputs */
|
||||
input[type="range"] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Force apparition of scrollbars on leopard */
|
||||
::-webkit-scrollbar {
|
||||
-webkit-appearance: none;
|
||||
|
@ -55,4 +55,25 @@
|
||||
-moz-box-sizing:border-box;
|
||||
background: rgba(0,0,0,0.5);
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.scaling-factor {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.scaling-factor-input {
|
||||
margin: 5px;
|
||||
vertical-align: middle;
|
||||
width: 145px;
|
||||
}
|
||||
|
||||
.scaling-factor-text {
|
||||
height: 31px;
|
||||
display: inline-block;
|
||||
line-height: 30px;
|
||||
width: 40px;
|
||||
border: 1px solid grey;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -44,6 +44,10 @@
|
||||
border-color: #555 !important;
|
||||
}
|
||||
|
||||
.resize-origin-option:hover {
|
||||
border : 3px solid white;
|
||||
}
|
||||
|
||||
.resize-origin-option.selected {
|
||||
border : 3px solid gold;
|
||||
}
|
||||
|
26
src/css/settings-save.css
Normal file
@ -0,0 +1,26 @@
|
||||
.save-field {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.save-status {
|
||||
margin-top: 10px;
|
||||
margin-bottom: -10px;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
text-shadow: none;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.save-file-name {
|
||||
white-space: nowrap;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.save-desktop-file-name {
|
||||
word-wrap: break-word;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
}
|
@ -21,55 +21,6 @@
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/********************************************************** *j* j** j*j j j j** *****************/
|
||||
/* Settings icons I I I I I\I \ */
|
||||
/********************************************************** *** *** *** * * '** *****************/
|
||||
|
||||
.tool-icon.gallery-icon {
|
||||
background-image: url(../img/gallery.png);
|
||||
background-position: 3px 3px;
|
||||
background-size: 39px 39px;
|
||||
}
|
||||
|
||||
.tool-icon.resize-icon {
|
||||
background-image: url(../img/resize-icon.png);
|
||||
background-position: 10px 10px;
|
||||
background-size: 26px 26px;
|
||||
}
|
||||
|
||||
.tool-icon.save-icon {
|
||||
background-image: url(../img/save.png);
|
||||
background-position: 6px 6px;
|
||||
background-size: 36px 36px;
|
||||
}
|
||||
|
||||
.tool-icon.gear-icon {
|
||||
background-image: url(../img/gear.png);
|
||||
background-position: 6px 7px;
|
||||
background-size: 32px 32px;
|
||||
}
|
||||
|
||||
.tool-icon.export-icon {
|
||||
background-image: url(../img/export.png);
|
||||
background-position: 7px 5px;
|
||||
background-size: 36px 36px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tool-icon.local-storage-icon {
|
||||
background-image: url(../img/local-storage-icon.png);
|
||||
background-position: 10px 12px;
|
||||
background-size: 30px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tool-icon.import-icon {
|
||||
background-image: url(../img/import-icon.png);
|
||||
background-position: 10px 5px;
|
||||
background-size: 26px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tool-icon .label {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
@ -132,7 +83,6 @@
|
||||
|
||||
.settings-description {
|
||||
margin : 0 0 10px 0;
|
||||
display : inline-block;
|
||||
}
|
||||
|
||||
.settings-form-section {
|
||||
@ -146,39 +96,3 @@
|
||||
[name*=checkbox] {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/************************************************************************************************/
|
||||
/* Save panel */
|
||||
/************************************************************************************************/
|
||||
|
||||
.anonymous .save-public-section,
|
||||
.anonymous #save-online-button {
|
||||
display : none;
|
||||
}
|
||||
|
||||
.save-field {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.save-status {
|
||||
margin-top: 10px;
|
||||
margin-bottom: -10px;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
text-shadow: none;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.save-file-name {
|
||||
white-space: nowrap;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.save-desktop-file-name {
|
||||
word-wrap: break-word;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
}
|
||||
|
113
src/css/sprites.css
Normal file
@ -0,0 +1,113 @@
|
||||
/*
|
||||
Icon classes can be used entirely standalone. They are named after their original file names.
|
||||
|
||||
```html
|
||||
<!-- `display: block` sprite -->
|
||||
<div class="icon-home"></div>
|
||||
|
||||
<!-- `display: inline-block` sprite -->
|
||||
<img class="icon-home" />
|
||||
```
|
||||
*/
|
||||
.icon-cloud_export {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -276px;
|
||||
width: 50px;
|
||||
height: 47px;
|
||||
}
|
||||
.icon-dragndrop {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -564px -173px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
.icon-duplicate {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -369px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.icon-export {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -564px -225px;
|
||||
width: 43px;
|
||||
height: 42px;
|
||||
}
|
||||
.icon-favicon {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -582px -151px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.icon-gallery {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -225px;
|
||||
width: 52px;
|
||||
height: 51px;
|
||||
}
|
||||
.icon-garbage {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: 0px 0px;
|
||||
width: 512px;
|
||||
height: 512px;
|
||||
}
|
||||
.icon-gear {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -563px -323px;
|
||||
width: 38px;
|
||||
height: 37px;
|
||||
}
|
||||
.icon-import-icon {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -576px -69px;
|
||||
width: 28px;
|
||||
height: 36px;
|
||||
}
|
||||
.icon-keyboard {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -133px;
|
||||
width: 70px;
|
||||
height: 40px;
|
||||
}
|
||||
.icon-local-storage-icon {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px 0px;
|
||||
width: 100px;
|
||||
height: 69px;
|
||||
}
|
||||
.icon-merge-icon {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -69px;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
}
|
||||
.icon-plus {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -323px;
|
||||
width: 51px;
|
||||
height: 46px;
|
||||
}
|
||||
.icon-popup-preview-arrow-gold {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -576px -105px;
|
||||
width: 24px;
|
||||
height: 18px;
|
||||
}
|
||||
.icon-popup-preview-arrow-white {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -582px -133px;
|
||||
width: 24px;
|
||||
height: 18px;
|
||||
}
|
||||
.icon-resize-icon {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -512px -173px;
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
}
|
||||
.icon-save {
|
||||
background-image: url(../img/spritesheet.png);
|
||||
background-position: -562px -276px;
|
||||
width: 43px;
|
||||
height: 42px;
|
||||
}
|
@ -55,3 +55,34 @@ body {
|
||||
vertical-align: -2px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* TOOLTIPS
|
||||
*/
|
||||
.tooltip-shortcut {
|
||||
color:gold;
|
||||
}
|
||||
|
||||
.tooltip-container {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.tooltip-descriptor {
|
||||
color:#999;
|
||||
}
|
||||
|
||||
.tooltip-descriptor:last-child {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.tooltip-descriptor-button {
|
||||
padding: 2px;
|
||||
border: 1px Solid #999;
|
||||
font-size: 0.8em;
|
||||
margin-right: 5px;
|
||||
width: 35px;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
line-height: 10px;
|
||||
}
|
@ -34,11 +34,11 @@
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
.tiled-frame-container {
|
||||
.preview-container .background-image-frame-container {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
background-repeat : repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.display-fps {
|
||||
@ -56,7 +56,6 @@
|
||||
height : 26px;
|
||||
margin : 0;
|
||||
box-sizing: border-box;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.preview-toggle-onion-skin {
|
||||
@ -81,26 +80,59 @@
|
||||
color : gold;
|
||||
}
|
||||
|
||||
.open-popup-preview-button {
|
||||
.preview-contextual-actions {
|
||||
position : absolute;
|
||||
z-index: 500;
|
||||
right : 10px;
|
||||
top : 10px;
|
||||
width : 24px;
|
||||
height: 18px;
|
||||
|
||||
border : 2px solid white;
|
||||
background : rgba(0,0,0,0.3);
|
||||
cursor : pointer;
|
||||
|
||||
opacity: 0;
|
||||
transition: 0.3s opacity, 0.3s border-color;
|
||||
}
|
||||
|
||||
.minimap-container:hover .open-popup-preview-button {
|
||||
.minimap-container:hover .preview-contextual-actions {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.original-size-button {
|
||||
width : 18px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
margin: 0 5px;
|
||||
|
||||
border: 2px solid white;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
color: white;
|
||||
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
font-family: Tahoma;
|
||||
}
|
||||
|
||||
.original-size-button-enabled {
|
||||
color: gold;
|
||||
border-color: gold;
|
||||
}
|
||||
|
||||
.preview-contextual-action {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.open-popup-preview-button {
|
||||
border : 2px solid white;
|
||||
background-color : rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.open-popup-preview-button:hover {
|
||||
border-color: gold;
|
||||
}
|
||||
|
||||
/**
|
||||
* The regular image is provided bby the sprite icons.png+icons.css
|
||||
*/
|
||||
.icon-minimap-popup-preview-arrow-white:hover {
|
||||
background-image: url(../img/icons/minimap/minimap-popup-preview-arrow-gold.png);
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
@ -5,13 +5,6 @@
|
||||
.layers-list-container {
|
||||
}
|
||||
|
||||
/*.layers-title {
|
||||
background-image: url('../img/layers.svg');
|
||||
background-size: 22px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 97%;
|
||||
}*/
|
||||
|
||||
.layers-title {
|
||||
position: relative;
|
||||
}
|
||||
|
@ -32,7 +32,6 @@
|
||||
border-radius: 0 0 0 2px;
|
||||
}
|
||||
|
||||
|
||||
.palettes-list-color:nth-child(1):after {
|
||||
content: "1";
|
||||
}
|
||||
@ -64,6 +63,7 @@
|
||||
.palettes-list-color:nth-child(-n+5) {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.palettes-list-color div {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
@ -137,10 +137,6 @@
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.palettes-list-actions .edit-icon {
|
||||
background-size: 15px;
|
||||
background-position: 50%;
|
||||
}
|
||||
.palettes-list-no-colors {
|
||||
height: 42px;
|
||||
width: 100%;
|
||||
|
@ -5,9 +5,6 @@
|
||||
height: 46px;
|
||||
margin: 1px;
|
||||
background-color: #3a3a3a;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 12px 12px;
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
|
||||
.tool-icon.selected {
|
||||
@ -22,161 +19,77 @@
|
||||
width : 100%;
|
||||
border: 3px solid gold;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tool-icon:hover {
|
||||
background-color: #444;
|
||||
}
|
||||
|
||||
/*
|
||||
* Tool icons:
|
||||
*/
|
||||
.tool-icon.tool-pen {
|
||||
background-image: url(../img/tools/pen.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-vertical-mirror-pen {
|
||||
background-image: url(../img/tools/mirror.png);
|
||||
background-position: 0px 10px;
|
||||
background-size: 38px 27px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-paint-bucket {
|
||||
background-image: url(../img/tools/paintbucket.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-eraser {
|
||||
background-image: url(../img/tools/eraser.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-stroke {
|
||||
background-image: url(../img/tools/stroke.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-rectangle {
|
||||
background-image: url(../img/tools/rectangle.png);
|
||||
background-position: 12px 14px;
|
||||
background-size: 24px 20px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-circle {
|
||||
background-image: url(../img/tools/circle.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-move {
|
||||
background-image: url(../img/tools/hand.png);
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-rectangle-select {
|
||||
background-image: url(../img/tools/rectangle_selection.png);
|
||||
background-position: 12px 14px;
|
||||
background-size: 24px 20px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-shape-select {
|
||||
background-image: url(../img/tools/magicwand.png);
|
||||
}
|
||||
|
||||
.tool-icon.tool-lighten {
|
||||
background-image: url(../img/tools/lighten.png);
|
||||
background-position: 8px 8px;
|
||||
background-size: 30px 30px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-colorpicker {
|
||||
background-image: url(../img/tools/eyedropper.png);
|
||||
background-size: 23px 23px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-colorswap {
|
||||
background-image: url(../img/tools/swap-colors.png);
|
||||
background-position: 6px 6px;
|
||||
background-size: 36px 36px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-flip {
|
||||
background-image: url(../img/tools/flip.png);
|
||||
background-position: 7px 11px;
|
||||
background-size: 32px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-rotate {
|
||||
background-image: url(../img/tools/rotate.png);
|
||||
background-position: 10px 9px;
|
||||
background-size: 26px;
|
||||
}
|
||||
|
||||
.tool-icon.tool-clone {
|
||||
background-image: url(../img/tools/clone.png);
|
||||
background-position: 9px 15px;
|
||||
background-size: 30px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Tool cursors:
|
||||
*/
|
||||
|
||||
.tool-paint-bucket .drawing-canvas-container:hover,
|
||||
.tool-colorswap .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/paint-bucket.png) 12 12, pointer;
|
||||
cursor: url(../img/cursors/paint-bucket.png) 12 12, pointer;
|
||||
}
|
||||
|
||||
.tool-vertical-mirror-pen .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/vertical-mirror-pen.png) 5 15, pointer;
|
||||
cursor: url(../img/cursors/vertical-mirror-pen.png) 5 15, pointer;
|
||||
}
|
||||
|
||||
.tool-pen .drawing-canvas-container:hover,
|
||||
.tool-lighten .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/pen.png) 0 15, pointer;
|
||||
.tool-lighten .drawing-canvas-container:hover,
|
||||
.tool-dithering .drawing-canvas-container:hover {
|
||||
cursor: url(../img/cursors/pen.png) 0 15, pointer;
|
||||
}
|
||||
|
||||
.tool-eraser .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/eraser.png) 0 15, pointer;
|
||||
cursor: url(../img/cursors/eraser.png) 0 15, pointer;
|
||||
}
|
||||
|
||||
.tool-stroke .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/pen.png) 0 15, pointer;
|
||||
cursor: url(../img/cursors/pen.png) 0 15, pointer;
|
||||
}
|
||||
|
||||
.tool-rectangle .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/rectangle.png) 0 15, pointer;
|
||||
cursor: url(../img/cursors/rectangle.png) 0 15, pointer;
|
||||
}
|
||||
|
||||
.tool-circle .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/circle.png) 2 15, pointer;
|
||||
cursor: url(../img/cursors/circle.png) 2 15, pointer;
|
||||
}
|
||||
|
||||
.tool-move .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/hand.png) 15 15, pointer;
|
||||
cursor: url(../img/cursors/hand.png) 7 7, pointer;
|
||||
}
|
||||
|
||||
.tool-rectangle-select .drawing-canvas-container:hover {
|
||||
.tool-rectangle-select .drawing-canvas-container:hover,
|
||||
.tool-lasso-select .drawing-canvas-container:hover {
|
||||
cursor: crosshair;
|
||||
}
|
||||
|
||||
.tool-shape-select .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/wand.png) 15 15, pointer;
|
||||
cursor: url(../img/cursors/wand.png) 15 15, pointer;
|
||||
}
|
||||
|
||||
.tool-colorpicker .drawing-canvas-container:hover {
|
||||
cursor: url(../img/icons/dropper.png) 0 15, pointer;
|
||||
cursor: url(../img/cursors/dropper.png) 0 15, pointer;
|
||||
}
|
||||
|
||||
.swap-colors-icon {
|
||||
background-image: url(../img/tools/swap-arrow-square-small-grey.png);
|
||||
.swap-colors-button {
|
||||
position: relative;
|
||||
top: 50px;
|
||||
left: 6px;
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
background-size: 18px;
|
||||
|
||||
opacity : 0.3;
|
||||
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
.swap-colors-icon:hover {
|
||||
.swap-colors-button:hover {
|
||||
opacity : 1;
|
||||
}
|
||||
|
||||
@ -246,28 +159,3 @@
|
||||
);
|
||||
}
|
||||
|
||||
.tools-tooltip-container {
|
||||
text-align: left;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.tools-tooltip-shortcut {
|
||||
color:gold;
|
||||
}
|
||||
|
||||
.tools-tooltip-descriptor {
|
||||
color:#999;
|
||||
}
|
||||
|
||||
.tools-tooltip-descriptor-button {
|
||||
padding:2px;
|
||||
border:1px Solid #999;
|
||||
font-size:0.8em;
|
||||
margin-right:5px;
|
||||
width:35px;
|
||||
text-align:center;
|
||||
border-radius:3px;
|
||||
display:inline-block;
|
||||
line-height: 10px;
|
||||
}
|
||||
|
||||
|
BIN
src/img/canvas-backgrounds/canvas-background-light.png
Normal file
After Width: | Height: | Size: 222 B |
After Width: | Height: | Size: 255 B |
After Width: | Height: | Size: 255 B |
BIN
src/img/canvas-backgrounds/canvas-background-medium.png
Normal file
After Width: | Height: | Size: 254 B |
Before Width: | Height: | Size: 223 B |
Before Width: | Height: | Size: 431 B |
Before Width: | Height: | Size: 278 B |
Before Width: | Height: | Size: 418 B |
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 761 B |
0
src/img/icons/color-palette.png → src/img/cursors/color-palette.png
Executable file → Normal file
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 543 B |
0
src/img/icons/eraser.png → src/img/cursors/eraser.png
Executable file → Normal file
Before Width: | Height: | Size: 656 B After Width: | Height: | Size: 656 B |
Before Width: | Height: | Size: 672 B After Width: | Height: | Size: 672 B |
Before Width: | Height: | Size: 557 B After Width: | Height: | Size: 557 B |
0
src/img/icons/paint-bucket.png → src/img/cursors/paint-bucket.png
Executable file → Normal file
Before Width: | Height: | Size: 707 B After Width: | Height: | Size: 707 B |
0
src/img/icons/pen.png → src/img/cursors/pen.png
Executable file → Normal file
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 450 B |
0
src/img/icons/rectangle.png → src/img/cursors/rectangle.png
Executable file → Normal file
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
src/img/icons/stroke.png → src/img/cursors/stroke.png
Executable file → Normal file
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 603 B |
0
src/img/icons/wand.png → src/img/cursors/wand.png
Executable file → Normal file
Before Width: | Height: | Size: 570 B After Width: | Height: | Size: 570 B |
Before Width: | Height: | Size: 532 B |
Before Width: | Height: | Size: 634 B |
Before Width: | Height: | Size: 734 B |
Before Width: | Height: | Size: 4.7 KiB |
BIN
src/img/gear.png
Before Width: | Height: | Size: 789 B |
BIN
src/img/icons/common/common-keyboard-gold.png
Normal file
After Width: | Height: | Size: 622 B |
BIN
src/img/icons/common/common-swapcolors-arrow-grey.png
Normal file
After Width: | Height: | Size: 454 B |
BIN
src/img/icons/frame/frame-dragndrop-white.png
Normal file
After Width: | Height: | Size: 607 B |
BIN
src/img/icons/frame/frame-duplicate-white.png
Normal file
After Width: | Height: | Size: 367 B |
BIN
src/img/icons/frame/frame-plus-white.png
Normal file
After Width: | Height: | Size: 318 B |
BIN
src/img/icons/frame/frame-recyclebin-white.png
Normal file
After Width: | Height: | Size: 321 B |
BIN
src/img/icons/minimap/minimap-popup-preview-arrow-gold.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
src/img/icons/minimap/minimap-popup-preview-arrow-white.png
Normal file
After Width: | Height: | Size: 239 B |
BIN
src/img/icons/settings/settings-export-white.png
Normal file
After Width: | Height: | Size: 964 B |
BIN
src/img/icons/settings/settings-gear-white.png
Normal file
After Width: | Height: | Size: 918 B |
BIN
src/img/icons/settings/settings-open-folder-white.png
Normal file
After Width: | Height: | Size: 681 B |
BIN
src/img/icons/settings/settings-resize-white.png
Normal file
After Width: | Height: | Size: 627 B |
BIN
src/img/icons/settings/settings-save-white.png
Normal file
After Width: | Height: | Size: 524 B |
BIN
src/img/icons/tools/tool-circle.png
Normal file
After Width: | Height: | Size: 1015 B |
BIN
src/img/icons/tools/tool-colorpicker.png
Normal file
After Width: | Height: | Size: 854 B |
BIN
src/img/icons/tools/tool-colorswap.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/img/icons/tools/tool-dithering.png
Normal file
After Width: | Height: | Size: 539 B |
BIN
src/img/icons/tools/tool-eraser.png
Normal file
After Width: | Height: | Size: 765 B |
BIN
src/img/icons/tools/tool-lasso-select.png
Normal file
After Width: | Height: | Size: 808 B |
BIN
src/img/icons/tools/tool-lighten.png
Normal file
After Width: | Height: | Size: 859 B |
BIN
src/img/icons/tools/tool-move.png
Normal file
After Width: | Height: | Size: 784 B |
BIN
src/img/icons/tools/tool-paint-bucket.png
Normal file
After Width: | Height: | Size: 919 B |
BIN
src/img/icons/tools/tool-pen.png
Normal file
After Width: | Height: | Size: 824 B |
BIN
src/img/icons/tools/tool-rectangle-select.png
Normal file
After Width: | Height: | Size: 708 B |
BIN
src/img/icons/tools/tool-rectangle.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
src/img/icons/tools/tool-shape-select.png
Normal file
After Width: | Height: | Size: 811 B |
BIN
src/img/icons/tools/tool-stroke.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/img/icons/tools/tool-vertical-mirror-pen.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/img/icons/transform/tool-clone.png
Normal file
After Width: | Height: | Size: 765 B |
BIN
src/img/icons/transform/tool-flip.png
Normal file
After Width: | Height: | Size: 896 B |
BIN
src/img/icons/transform/tool-rotate.png
Normal file
After Width: | Height: | Size: 977 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 438 B |
BIN
src/img/plus.png
Before Width: | Height: | Size: 271 B |
Before Width: | Height: | Size: 506 B |
BIN
src/img/save.png
Before Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1010 B |