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 : (),
+ );
+}