implemented change_unit

This commit is contained in:
King Kévin 2015-08-28 11:58:30 +02:00
parent 34f4e35361
commit 16fa8a746c
2 changed files with 65 additions and 46 deletions

View File

@ -91,46 +91,6 @@ function cvlp_rectangle(x, y, width, height, thickness, radius=0, round=true) {
return rectangle
}
// convert value from one unit to another
// units allowed: mm, in, mil
// returns converted value, on null if unknown unit
function convert_unit(value, from, to)
{
// don't convert if the unit is the same (avoid calculation imprecisions)
if (from==to) {
return value;
}
// convert to µm
var mum = 0;
switch (from) {
case 'mm':
mum = value*1000;
break;
case 'in':
mum = value*1000*25.40;
break;
case 'mil':
mum = value*25.40;
break;
default:
return null;
}
switch (to) {
case 'mm':
mum = mum/1000;
break;
case 'in':
mum = mum/1000/25.40;
break;
case 'mil':
mum = mum/25.40;
break;
default:
return null;
}
return fixed(mum);
}
// convert JSON to SVG
function json2svg(json) {
// create svg

View File

@ -21,12 +21,12 @@
// draw logo
function draw() {
// get values
var pad_size = parseInt(pad_size_input.value,10)
var pad_thickness = parseInt(pad_thickness_input.value,10)
var pad_spacing = parseInt(pad_spacing_input.value,10)
var pad_chip_spacing = parseInt(pad_chip_spacing_input.value,10)
var chip_thickness = parseInt(chip_thickness_input.value,10)
var text_thickness = parseInt(text_thickness_input.value,10)
var pad_size = parseFloat(pad_size_input.value)
var pad_thickness = parseFloat(pad_thickness_input.value)
var pad_spacing = parseFloat(pad_spacing_input.value)
var pad_chip_spacing = parseFloat(pad_chip_spacing_input.value)
var chip_thickness = parseFloat(chip_thickness_input.value)
var text_thickness = parseFloat(text_thickness_input.value)
// set values in logo
var size = pad_thickness+pad_size+pad_chip_spacing*2+pad_spacing*5+pad_chip_spacing*2+pad_size+pad_thickness
@ -146,6 +146,65 @@
return
}
// get values
var pad_size = parseFloat(pad_size_input.value)
var pad_thickness = parseFloat(pad_thickness_input.value)
var pad_spacing = parseFloat(pad_spacing_input.value)
var pad_chip_spacing = parseFloat(pad_chip_spacing_input.value)
var chip_thickness = parseFloat(chip_thickness_input.value)
var text_thickness = parseFloat(text_thickness_input.value)
// set converted values
pad_size_input.value = convert_unit(pad_size, logo.unit, unit)
pad_thickness_input.value = convert_unit(pad_thickness, logo.unit, unit)
pad_spacing_input.value = convert_unit(pad_spacing, logo.unit, unit)
pad_chip_spacing_input.value = convert_unit(pad_chip_spacing, logo.unit, unit)
chip_thickness_input.value = convert_unit(chip_thickness, logo.unit, unit)
text_thickness_input.value = convert_unit(text_thickness, logo.unit, unit)
// save unit and redraw
logo.unit = unit
draw()
}
// convert value from one unit to another
// units allowed: mm, in, mil
// returns converted value, on null if unknown unit
function convert_unit(value, from, to)
{
// don't convert if the unit is the same (avoid calculation imprecisions)
if (from==to) {
return value;
}
// convert to µm
var mum = 0;
switch (from) {
case 'mm':
mum = value*1000;
break;
case 'in':
mum = value*1000*25.40;
break;
case 'mil':
mum = value*25.40;
break;
default:
return null;
}
switch (to) {
case 'mm':
mum = mum/1000;
break;
case 'in':
mum = mum/1000/25.40;
break;
case 'mil':
mum = mum/25.40;
break;
default:
return null;
}
return mum;
}
</script>
<div id="svg"></div>