Tk Source Code

Ticket Change Details
Login
Overview

Artifact ID: d79f85c835ba9e0d8144d9dffbd167e93c9a13e8ffa4e6aa81d70bda1ff38d73
Ticket: 98c41cf3e7259ea0adab3e1e220dcf555d5bc88b
::tk::Darken does not properly brighten colors
User & Date: anonymous 2018-04-20 11:28:28
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/plain"
  4. comment changed to:
    In library/palette.tcl the comment to the procedure ::tk::Darken claims, that colors can be brightened (tinted versus white), "50 means darken by 50%, 110 means brighten by 10%". However, [::tk::Darken #ff0000 150] again yields #ff0000.
    
    Either the comment with respect to brightening should be removed. Or, the code should be changed along the following lines:
    
    # ::tk::Darken --
    # Given a color name, computes a new color value that darkens (or
    # brightens) the given color by a given percent.
    #
    # Arguments:
    # color -	Name of starting color.
    # percent -	Integer telling how much to brighten or darken as a
    #		percent: 50 means darken by 50%, 110 means brighten
    #		by 10%.
    
    proc ::tk::Darken {color percent} {
        if {percent < 0} {
    	return "black"
        } elseif {percent > 200} {
    	return "white"
        } elseif {percent <= 100} {
    	foreach {red green blue} [winfo rgb . $color] {
    	    set red [expr {($red/256)*$percent/100}]
    	    set green [expr {($green/256)*$percent/100}]
    	    set blue [expr {($blue/256)*$percent/100}]
    	}
        } elseif {percent > 100} {
    	foreach {red green blue} [winfo rgb . $color] {
    	    set red [expr {255 - ((65535-$red)/256)*(200-$percent)/100}]
    	    set green [expr {255 - ((65535-$green)/256)*(200-$percent)/100}]
    	    set blue [expr {255 - ((65535-$blue)/256)*(200-$percent)/100}]
    	}
        }
        return [format "#%02x%02x%02x" $red $green $blue]
    }
    
  5. foundin changed to: "8.6.0"
  6. is_private changed to: "0"
  7. login: "anonymous"
  8. priority changed to: "5 Medium"
  9. private_contact changed to: "d4b794bcf2aa1ce2572aef5684f59cb989d0c65a"
  10. resolution changed to: "None"
  11. severity changed to: "Minor"
  12. status changed to: "Open"
  13. submitter changed to: "anonymous"
  14. subsystem changed to: "29. Colormaps and Visuals"
  15. title changed to: "::tk::Darken does not properly brighten colors"
  16. type changed to: "Bug"