Merge pull request #39 from rsheldiii/colors

Promote colors to first-party
This commit is contained in:
Bob 2020-05-01 16:08:09 -04:00 committed by GitHub
commit 65b464ed3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 73 additions and 36 deletions

View File

@ -192,6 +192,13 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
// Shouldn't work in thingiverse customizer, though it has been... // Shouldn't work in thingiverse customizer, though it has been...
$stem_positions = [[0,0]]; $stem_positions = [[0,0]];
// colors
$primary_color = [.2667,.5882,1];
$secondary_color = [.4412, .7, .3784];
$tertiary_color = [1, .6941, .2];
$quaternary_color = [.4078, .3569, .749];
$warning_color = [1,0,0, 0.15];
// key width functions // key width functions
module u(u=1) { module u(u=1) {
@ -799,10 +806,13 @@ module bump(depth=undef) {
// kinda dirty, but it works // kinda dirty, but it works
// might not work great with fully sculpted profiles yet // might not work great with fully sculpted profiles yet
// NOTE: this needs to come after row declarations or it won't work
module upside_down() { module upside_down() {
if ($stem_inner_slop != 0) { if ($stem_inner_slop != 0) {
echo("it is recommended you set inner stem slop to 0 when you use upside_down()"); echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
} }
$stem_support_type = "disable";
// $top_tilt*2 because top_placement rotates by top_tilt for us // $top_tilt*2 because top_placement rotates by top_tilt for us
// first rotate 180 to get the keycaps to face the same direction // first rotate 180 to get the keycaps to face the same direction
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) { rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
@ -817,6 +827,17 @@ module sideways() {
translate([0,0,cos(extra_y_rotation) * total_key_width()/2]) translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
rotate([0,90 + extra_y_rotation ,0]) children(); rotate([0,90 + extra_y_rotation ,0]) children();
} }
// emulating the % modifier.
// since we use custom colors, just using the % modifier doesn't work
module debug() {
$primary_color = [0.5,0.5,0.5,0.2];
$secondary_color = [0.5,0.5,0.5,0.2];
$tertiary_color = [0.5,0.5,0.5,0.2];
$quaternary_color = [0.5,0.5,0.5,0.2];
%children();
}
module arrows(profile, rows = [4,4,4,3]) { module arrows(profile, rows = [4,4,4,3]) {
positions = [[0, 0], [1, 0], [2, 0], [1, 1]]; positions = [[0, 0], [1, 0], [2, 0], [1, 1]];
legends = ["←", "↓", "→", "↑"]; legends = ["←", "↓", "→", "↑"];
@ -3330,16 +3351,11 @@ function dup(value=0,n) = [for (i = [1:n]) value];
SMALLEST_POSSIBLE = 1/128; SMALLEST_POSSIBLE = 1/128;
$fs = .1; $fs = .1;
$unit = 19.05; $unit = 19.05;
blue = [.2667,.5882,1];
color2 = [.5412, .4784, 1];
purple = [.4078, .3569, .749];
yellow = [1, .6941, .2];
transparent_red = [1,0,0, 0.15];
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height // key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
module shape(thickness_difference, depth_difference=0){ module shape(thickness_difference, depth_difference=0){
dished(depth_difference, $inverted_dish) { dished(depth_difference, $inverted_dish) {
color(blue) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0); color($primary_color) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
} }
} }
@ -3348,9 +3364,9 @@ module shape(thickness_difference, depth_difference=0){
// the dish doesn't _quite_ reach as far as it should // the dish doesn't _quite_ reach as far as it should
module rounded_shape() { module rounded_shape() {
dished(-$minkowski_radius, $inverted_dish) { dished(-$minkowski_radius, $inverted_dish) {
color(blue) minkowski(){ color($primary_color) minkowski(){
// half minkowski in the z direction // half minkowski in the z direction
color(blue) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0); color($primary_color) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
/* cube($minkowski_radius); */ /* cube($minkowski_radius); */
sphere(r=$minkowski_radius, $fn=48); sphere(r=$minkowski_radius, $fn=48);
} }
@ -3362,7 +3378,7 @@ module rounded_shape() {
// the main difference is minkowski happens after dishing, meaning the dish is // the main difference is minkowski happens after dishing, meaning the dish is
// also minkowski'd // also minkowski'd
/* module rounded_shape() { /* module rounded_shape() {
color(blue) minkowski(){ color($primary_color) minkowski(){
// half minkowski in the z direction // half minkowski in the z direction
shape($minkowski_radius * 2, $minkowski_radius/2); shape($minkowski_radius * 2, $minkowski_radius/2);
difference(){ difference(){
@ -3524,7 +3540,7 @@ module front_placement() {
// just to DRY up the code // just to DRY up the code
module _dish() { module _dish() {
dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish); color($secondary_color) dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
} }
module envelope(depth_difference=0) { module envelope(depth_difference=0) {
@ -3582,7 +3598,7 @@ module keytext(text, position, font_size, depth) {
woffset = (top_total_key_width()/3.5) * position[0]; woffset = (top_total_key_width()/3.5) * position[0];
hoffset = (top_total_key_height()/3.5) * -position[1]; hoffset = (top_total_key_height()/3.5) * -position[1];
translate([woffset, hoffset, -depth]){ translate([woffset, hoffset, -depth]){
linear_extrude(height=$dish_depth){ color($tertiary_color) linear_extrude(height=$dish_depth){
text(text=text, font=$font, size=font_size, halign="center", valign="center"); text(text=text, font=$font, size=font_size, halign="center", valign="center");
} }
} }
@ -3600,15 +3616,15 @@ module keystem_positions(positions) {
module support_for(positions, stem_type) { module support_for(positions, stem_type) {
keystem_positions(positions) { keystem_positions(positions) {
color(yellow) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw); color($tertiary_color) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
} }
} }
module stems_for(positions, stem_type) { module stems_for(positions, stem_type) {
keystem_positions(positions) { keystem_positions(positions) {
color(yellow) stem(stem_type, $total_depth, $stem_slop); color($tertiary_color) stem(stem_type, $total_depth, $stem_slop);
if ($stem_support_type != "disable") { if ($stem_support_type != "disable") {
color(color2) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop); color($quaternary_color) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
} }
} }
} }
@ -3630,7 +3646,7 @@ module cherry_keyswitch() {
//approximate (fully depressed) cherry key to check clearances //approximate (fully depressed) cherry key to check clearances
module clearance_check() { module clearance_check() {
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){ if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
color(transparent_red){ color($warning_color){
translate([0,0,3.6 + $stem_inset - 5]) { translate([0,0,3.6 + $stem_inset - 5]) {
cherry_keyswitch(); cherry_keyswitch();
} }
@ -3639,7 +3655,6 @@ module clearance_check() {
} }
module legends(depth=0) { module legends(depth=0) {
if (len($front_legends) > 0) { if (len($front_legends) > 0) {
front_placement() { front_placement() {
if (len($front_legends) > 0) { if (len($front_legends) > 0) {
@ -3665,7 +3680,7 @@ module legends(depth=0) {
module artisan(depth) { module artisan(depth) {
top_of_key() { top_of_key() {
// artisan objects / outset shape legends // artisan objects / outset shape legends
children(); color($secondary_color) children();
} }
} }
@ -3705,7 +3720,7 @@ module key(inset = false) {
if(!$outset_legends) legends($inset_legend_depth); if(!$outset_legends) legends($inset_legend_depth);
// subtract the clearance check if it's enabled, letting the user see the // subtract the clearance check if it's enabled, letting the user see the
// parts of the keycap that will hit the cherry switch // parts of the keycap that will hit the cherry switch
if ($clearance_check) clearance_check(); if ($clearance_check) %clearance_check();
} }
// both stem and support are optional // both stem and support are optional
@ -3914,6 +3929,13 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
// Where the stems are in relation to the center of the keycap, in units. default is one in the center // Where the stems are in relation to the center of the keycap, in units. default is one in the center
// Shouldn't work in thingiverse customizer, though it has been... // Shouldn't work in thingiverse customizer, though it has been...
$stem_positions = [[0,0]]; $stem_positions = [[0,0]];
// colors
$primary_color = [.2667,.5882,1];
$secondary_color = [.4412, .7, .3784];
$tertiary_color = [1, .6941, .2];
$quaternary_color = [.4078, .3569, .749];
$warning_color = [1,0,0, 0.15];
key(); key();
} }

View File

@ -20,16 +20,11 @@ use <libraries/skin.scad>
SMALLEST_POSSIBLE = 1/128; SMALLEST_POSSIBLE = 1/128;
$fs = .1; $fs = .1;
$unit = 19.05; $unit = 19.05;
blue = [.2667,.5882,1];
color2 = [.5412, .4784, 1];
purple = [.4078, .3569, .749];
yellow = [1, .6941, .2];
transparent_red = [1,0,0, 0.15];
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height // key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
module shape(thickness_difference, depth_difference=0){ module shape(thickness_difference, depth_difference=0){
dished(depth_difference, $inverted_dish) { dished(depth_difference, $inverted_dish) {
color(blue) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0); color($primary_color) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
} }
} }
@ -38,9 +33,9 @@ module shape(thickness_difference, depth_difference=0){
// the dish doesn't _quite_ reach as far as it should // the dish doesn't _quite_ reach as far as it should
module rounded_shape() { module rounded_shape() {
dished(-$minkowski_radius, $inverted_dish) { dished(-$minkowski_radius, $inverted_dish) {
color(blue) minkowski(){ color($primary_color) minkowski(){
// half minkowski in the z direction // half minkowski in the z direction
color(blue) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0); color($primary_color) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
/* cube($minkowski_radius); */ /* cube($minkowski_radius); */
sphere(r=$minkowski_radius, $fn=48); sphere(r=$minkowski_radius, $fn=48);
} }
@ -52,7 +47,7 @@ module rounded_shape() {
// the main difference is minkowski happens after dishing, meaning the dish is // the main difference is minkowski happens after dishing, meaning the dish is
// also minkowski'd // also minkowski'd
/* module rounded_shape() { /* module rounded_shape() {
color(blue) minkowski(){ color($primary_color) minkowski(){
// half minkowski in the z direction // half minkowski in the z direction
shape($minkowski_radius * 2, $minkowski_radius/2); shape($minkowski_radius * 2, $minkowski_radius/2);
difference(){ difference(){
@ -214,7 +209,7 @@ module front_placement() {
// just to DRY up the code // just to DRY up the code
module _dish() { module _dish() {
dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish); color($secondary_color) dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
} }
module envelope(depth_difference=0) { module envelope(depth_difference=0) {
@ -272,7 +267,7 @@ module keytext(text, position, font_size, depth) {
woffset = (top_total_key_width()/3.5) * position[0]; woffset = (top_total_key_width()/3.5) * position[0];
hoffset = (top_total_key_height()/3.5) * -position[1]; hoffset = (top_total_key_height()/3.5) * -position[1];
translate([woffset, hoffset, -depth]){ translate([woffset, hoffset, -depth]){
linear_extrude(height=$dish_depth){ color($tertiary_color) linear_extrude(height=$dish_depth){
text(text=text, font=$font, size=font_size, halign="center", valign="center"); text(text=text, font=$font, size=font_size, halign="center", valign="center");
} }
} }
@ -290,15 +285,15 @@ module keystem_positions(positions) {
module support_for(positions, stem_type) { module support_for(positions, stem_type) {
keystem_positions(positions) { keystem_positions(positions) {
color(yellow) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw); color($tertiary_color) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
} }
} }
module stems_for(positions, stem_type) { module stems_for(positions, stem_type) {
keystem_positions(positions) { keystem_positions(positions) {
color(yellow) stem(stem_type, $total_depth, $stem_slop); color($tertiary_color) stem(stem_type, $total_depth, $stem_slop);
if ($stem_support_type != "disable") { if ($stem_support_type != "disable") {
color(color2) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop); color($quaternary_color) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
} }
} }
} }
@ -320,7 +315,7 @@ module cherry_keyswitch() {
//approximate (fully depressed) cherry key to check clearances //approximate (fully depressed) cherry key to check clearances
module clearance_check() { module clearance_check() {
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){ if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
color(transparent_red){ color($warning_color){
translate([0,0,3.6 + $stem_inset - 5]) { translate([0,0,3.6 + $stem_inset - 5]) {
cherry_keyswitch(); cherry_keyswitch();
} }
@ -329,7 +324,6 @@ module clearance_check() {
} }
module legends(depth=0) { module legends(depth=0) {
if (len($front_legends) > 0) { if (len($front_legends) > 0) {
front_placement() { front_placement() {
if (len($front_legends) > 0) { if (len($front_legends) > 0) {
@ -355,7 +349,7 @@ module legends(depth=0) {
module artisan(depth) { module artisan(depth) {
top_of_key() { top_of_key() {
// artisan objects / outset shape legends // artisan objects / outset shape legends
children(); color($secondary_color) children();
} }
} }
@ -395,7 +389,7 @@ module key(inset = false) {
if(!$outset_legends) legends($inset_legend_depth); if(!$outset_legends) legends($inset_legend_depth);
// subtract the clearance check if it's enabled, letting the user see the // subtract the clearance check if it's enabled, letting the user see the
// parts of the keycap that will hit the cherry switch // parts of the keycap that will hit the cherry switch
if ($clearance_check) clearance_check(); if ($clearance_check) %clearance_check();
} }
// both stem and support are optional // both stem and support are optional

View File

@ -145,10 +145,13 @@ module bump(depth=undef) {
// kinda dirty, but it works // kinda dirty, but it works
// might not work great with fully sculpted profiles yet // might not work great with fully sculpted profiles yet
// NOTE: this needs to come after row declarations or it won't work
module upside_down() { module upside_down() {
if ($stem_inner_slop != 0) { if ($stem_inner_slop != 0) {
echo("it is recommended you set inner stem slop to 0 when you use upside_down()"); echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
} }
$stem_support_type = "disable";
// $top_tilt*2 because top_placement rotates by top_tilt for us // $top_tilt*2 because top_placement rotates by top_tilt for us
// first rotate 180 to get the keycaps to face the same direction // first rotate 180 to get the keycaps to face the same direction
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) { rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
@ -163,3 +166,14 @@ module sideways() {
translate([0,0,cos(extra_y_rotation) * total_key_width()/2]) translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
rotate([0,90 + extra_y_rotation ,0]) children(); rotate([0,90 + extra_y_rotation ,0]) children();
} }
// emulating the % modifier.
// since we use custom colors, just using the % modifier doesn't work
module debug() {
$primary_color = [0.5,0.5,0.5,0.2];
$secondary_color = [0.5,0.5,0.5,0.2];
$tertiary_color = [0.5,0.5,0.5,0.2];
$quaternary_color = [0.5,0.5,0.5,0.2];
%children();
}

View File

@ -176,3 +176,10 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
// Where the stems are in relation to the center of the keycap, in units. default is one in the center // Where the stems are in relation to the center of the keycap, in units. default is one in the center
// Shouldn't work in thingiverse customizer, though it has been... // Shouldn't work in thingiverse customizer, though it has been...
$stem_positions = [[0,0]]; $stem_positions = [[0,0]];
// colors
$primary_color = [.2667,.5882,1];
$secondary_color = [.4412, .7, .3784];
$tertiary_color = [1, .6941, .2];
$quaternary_color = [.4078, .3569, .749];
$warning_color = [1,0,0, 0.15];