Blob Blame History Raw
From a721bc39a62d52a43f3a1cf8e5202b4cd606ff11 Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillomovitch@gmail.com>
Date: Sat, 7 Sep 2019 09:44:31 +0200
Subject: return of to_MonitorsDB function

this function was erroneously removed while exporting the parsing code
in Parse::EDID module.
---
 monitor-parse-edid | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/monitor-parse-edid b/monitor-parse-edid
index 7fd5fe4..c966c60 100755
--- a/monitor-parse-edid
+++ b/monitor-parse-edid
@@ -121,3 +121,32 @@ sub print_edid {
 	print "\tModeLine ", $h->{ModeLine}, "\n";	
     }
 }
+
+sub to_MonitorsDB {
+    my ($edid) = @_;
+
+    if (!$edid->{monitor_range}) {
+        print STDERR "No monitor range data in EDID.\n";
+        return;
+    }
+    if (!$edid->{EISA_ID}) {
+        print STDERR "No monitor EISA_ID in EDID.\n";
+        return;
+    }
+
+    my $detailed_timings = $edid->{detailed_timings} || [];
+    my @preferred_resolutions = map {
+        join('x', $_->{horizontal_active}, $_->{vertical_active});
+    } grep { !$_->{bad_ratio} } @$detailed_timings;
+
+    (my $monitor_name = $edid->{monitor_name}) =~ s/;/,/g;
+    my ($raw_vendor, $raw_model) = $edid->{EISA_ID} =~ /(...)(.*)/;
+    my ($VendorName, $only_Model) = $monitor_name =~ /(\S+)\s(.*)/ ?
+        ($1, $2) : ($raw_vendor, $monitor_name || $raw_model);
+    join('; ',
+        $VendorName, "$VendorName $only_Model", $edid->{EISA_ID},
+        sprintf("%u-%u", $edid->{monitor_range}{horizontal_min}, $edid->{monitor_range}{horizontal_max}),
+        sprintf("%u-%u", $edid->{monitor_range}{vertical_min}, $edid->{monitor_range}{vertical_max}),
+        @$detailed_timings == 1 ? @preferred_resolutions : (),
+    );
+}