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