|
DefineClass.XHistogram = { |
|
__parents = {"XWindow"}, |
|
|
|
type = "L", |
|
color = RGB(128, 128, 128), |
|
Background = RGB(255, 255, 255), |
|
value = false, |
|
} |
|
|
|
function XHistogram:SetValue(v) |
|
if self.value ~= v then |
|
UIL.Invalidate() |
|
end |
|
self.value = v |
|
end |
|
|
|
function XHistogram:DrawContent() |
|
if self.value then |
|
DrawHistogram(self.value, self.content_box, self.color) |
|
end |
|
end |
|
|
|
|
|
DefineClass.HistogramPropertyObj = { |
|
__parents = {"PropertyObject"}, |
|
|
|
properties = { |
|
{id = "lum", editor = "histogram", default = false,}, |
|
{id = "lum_mean", editor = "number", default = 0, read_only = true, scale = 255, }, |
|
{id = "pixels", editor = "number", default = 0, read_only = true, }, |
|
{id = "r", editor = "histogram", default = false,}, |
|
{id = "g", editor = "histogram", default = false,}, |
|
{id = "b", editor = "histogram", default = false,}, |
|
}, |
|
update_thread = false, |
|
update_interval = 1000, |
|
} |
|
|
|
function HistogramPropertyObj:Getlum_mean() |
|
return self.lum and self.lum.mean or 0 |
|
end |
|
|
|
function HistogramPropertyObj:Getpixels() |
|
return self.lum and self.lum.pixels or 0 |
|
end |
|
|
|
if FirstLoad then |
|
g_HistogramEnabled = false |
|
end |
|
|
|
function GedToggleHistogram() |
|
ToggleHistogram() |
|
end |
|
function ToggleHistogram() |
|
if not g_HistogramEnabled then |
|
g_HistogramEnabled = HistogramPropertyObj:new({}) |
|
g_HistogramEnabled.update_thread = CreateRealTimeThread(function() |
|
local self = g_HistogramEnabled |
|
while true do |
|
if GedObjects[self] then |
|
self.r, self.g, self.b, self.lum = AsyncBuildHistogram() |
|
ObjModified(self) |
|
Sleep(self.update_interval) |
|
else |
|
Sleep(2000) |
|
end |
|
end |
|
end) |
|
end |
|
GedProperties(g_HistogramEnabled) |
|
end |
|
|