* Tue May 23 2023 Mia Herkt <mia@0x0.st>
- Update to v0.0.29
Changed:
* BED: dynamic name: displays only MFC and product ID (removed
prod. year and week)
* VDB::SVD: append "[Native]" if native resolution flag is set.
Fixed:
* (BUG::regression) EDID_cl::getVidDesc(): missing space between
aspect ratio and screen resolution: incorrect SVD description
in text output mode (Save_As_Text).
* Using global strings where possible: cheaper, faster.
xxx::getGrpName() -> global EDID_cl::gp_name
wxEDID_Frame::SaveRep_SubGrps(), WriteField(),
GetFullGroupName() -> wxEDID_Frame::sval
EDID_cl::getStrUint() -> EDID_cl::tmps2
* Sun May 21 2023 Mia Herkt <mia@0x0.st>
- Update to v0.0.28
Changed:
* Change: Default colors for all controls:
allows to work with different window themes:
wxWidgets 3.0.x: not working for wxAUI windows, wxTreeCtrl
and wxGrid
wxWidgets 3.2.x: not working for wxGrid
Added:
* Automatic selection of BED block after the EDID file is
loaded/imported.
* BDD: display image size as dynamic block name.
* BED: display MFC code, year, week, prod ID as dynamic block
name.
* DTD and VDB::SVD: use screen resolution as dynamic block name.
* MND: display monitor name as dynamic block name.
* STI: use screen resolution as dynamic block name or set
"not used" if both bytes are 0x1.
* VID: display input type as dynamic block name.
* config option: blk_dynamic_names.
* edi_grp_cl::getGrpName(): support for dynamic block names.
Fixed:
* DTD panel: sct_pixclk control: value range should be
0..65535 (655.35MHz), not 0..655350
* DTD panel: sct_vsoffs, sct_vswidth controls: value range
should be 0..63, not 0..1023
* Thu Sep 29 2022 Mia Herkt <mia@0x0.st>
- Update to v0.0.27
Changed
* ExportEDID_hex(): do not append wxEDID version and the source
file name at the end of output file: this causes errors when
the file needs to be imported back (unless ignoring errors is
enabled).
* VFPD: Video Format Preference Data Block is now root group for
array of SVRs
* CEA-EXT::VFPD:SVR: added vmap: CEA_vidm_map, same as for SVD:
this allows to show meaning of SVR values when the EDID
structure is saved as text.
* wxEDID_Frame::OpenEDID(), ImportEDID_hex(): always try to
Reparse() faulty EDID structure when "Ignore EDID errors" is
enabled. wxEDID_Frame::Reparse() is now returning fault even
when ignoring errors is enabled.
Added
* wxEDID_Frame::SaveRep_SubGrps(): decoding of VFPD:SVR values.
Fixed
* The checksum values showed in BLockData grid for EDID.BASE.BED
or EDID.CEA.CHD were not refreshed after
AssembleEDID/Save/Export. To refresh those cells, it was
necessary to Reparse() the EDID buffer. Now the checksums are
automatically updated in wxEDID_Frame::AssembleEDID_main(),
invoked from wxEDID_Frame::SaveEDID(), ExportEDID_hex(),
SaveReport() and evt_assemble_edid().
* (BUG::leak) wxEDID_Frame::ImportEDID_hex(): memory leak
possible when the hex->bin conversion fails.
* (BUG::wxWidgets3.x ::wxAUI) AUI managed panel gets refreshed
even when it's invisible, what can cause horrible flickering
during window resizing. wxEDID_Frame::evt_ntbook_page():
disable the EvtHandler in AUI Manager when the panel is
invisible.
* (BUG: Regression in v0.0.23) The functions EDID_cl::MfcId(),
ProdSN(), ProdWk(), ProdYr() were not updated to work with
local data buffers: the respective fields in EDID.BASE.BED
could not be changed.
* wxEDID_Frame::SaveRep_SubGrps(): Video Data Block: VIC values
were not really decoded, so for SVD values > 127 the
desriptions were incorrect.
* (BUG::old::mislooked) wxEDID_Frame::SaveRep_SubGrps() uses
value descriptions from vmap_t->vname_map_t, but reserved
values were not included in some cases -> incorrect (shifted)
descriptions in the output file. Now all the reserved values
are included with value description set to NULL.
edi_grp_cl::create_selector() ignores values with NULL name
ptr. wxEDID_Frame::SaveRep_SubGrps() prints "<reserved>"
for NULL name ptr.
Version: 0.0.25-bp154.1.63
* Tue Apr 20 2021 Mia Herkt <mia@0x0.st>
- Update to v0.0.25
Changed
* default size for all spin controls on DTD_Constructor panel.
Looks ugly, but works with wxWidgets compiled against GTK3.
Fixed
* <various functions> :: in case of error, always return error
message, not just the rcode. Some function were returning the
message only if "Ignore Errors" mode was enabled.
* Build fails with Clang: unlike GCC, Clang does not support
static initialization of flexible arrays in C++ mode:
removed flex arrays from all field groups descriptors.
- Changes in v0.0.24
Added
* VID: Video Input Descriptor: support for field definitions
introduced in EDID v1.4
* wxEDID_Frame::ImportEDID_hex(): report source file byte offset
if conversion fails.
Changed
* EDID base block: UNK: Unknown Descriptor, unk_cl::init():
insert unknown byte fields instead of single byte string
(easier to view and edit).
* EDID_class.h: CEA-specific classes moved to dedicated headers:
CEA_class.h, CEA_EXT_class.h
* EDID_class.h: shared declarations moved to EDID_shared.h
Fixed
* (BUG::regression) wxEDID_Frame::UpdateBlockTree():
the BlockTree was not expanded automatically when opened file
contains only the base EDID block (no extensions).
* (BUG::regression): edi_grp_cl::init_fields(): a call to
FieldsAr.Empty() is necessary for ForcedGroupRefresh()
functions.
* (old mislooked BUG): STI: Standard Timing Information: NU flag
was not set for unused fields.
* Menu "Options": "Reparse EDID buffer" and "AssembleEDID"
options are disabled until EDID data is loaded/imported.
* wxEDID_Frame::UpdateDataGrid(): missing auto-resizing of row
labels width: BlkDataGrid->SetRowLabelSize(wxGRID_AUTOSIZE).
* Sun Mar 14 2021 Mia Herkt <mia@0x0.st>
- Drop wxedid-no-implicit-string-conversion.patch
- Update to v0.0.23
Fixed
* (BUG in GCC v8.3.0): broken array bounds checking with
optimizations enabled, f.e: "src/CEA_EXT_class.cpp:1512:13:
warning: ‘void* memcpy(void*, const void*, size_t)’ forming
offset [49, 560] is out of the bounds [0, 48] of object
‘slocd_cl::SLOCD_subg’ with type ‘const subgrp_dsc_t’
{aka ‘const subgrp_dsc_s’} [-Warray-bounds]" Disabled
diagnostic for [-Warray-bounds] in CEA_EXT_class.cpp
* (BUG) EDID_cl::ParseEDID_CEA(): checking of padding bytes after
last DTD did not allow to ignore errors (bad rcode on exit).
* (BUG) IFDB::VSIFD: incorrect offset for ieee_id field.
* (BUG) RMCD: several bugs in field offsets, incorrect max values
* (BUG) SAB: Speaker Allocation Block: used ID_VSD as typeID,
instead of (missing) ID_SAB.
* (BUG) SLOCD fields: incorrect offset for channel index byte.
* (BUG) VSD: Vendor Specific Data Block: cea_vsd_cl::init()
display unspecified payload data as unknown bytes (previously
ignored).
* (BUG::LEAK): GroupAr_cl: Delete()/Paste(): call Detach() then
delete the object: RemoveAt() only removes the pointer.
* (BUG::typo) HDRD: HDR Dynamic Metadata Data Block: incorrect
pointer used to read HDRD metadata lenght: base DBC pointer
(inst) used instead of p_mtd.
* (partially): VSD: dynamic data layout, depending on block
length (currently only 00-0C-03 ID is supported)
* BlkDataGrid: don't use fixed Row/Column sizes: problems on
HDPI (thanks to Jat).
* BlockTree menu: show group free space if no subgroups are
present.
* BlockTree menu: show info about free space even if there's no
source block available.
* CEA header: corrected description of dtd_offs field.
* Calc. relative offsets of top level data groups (relative to
the begin of EDID blocks)
* HDRD: fixed field descriptions, fixed min/max values for
mtd_ver and resvd47.
* InsertInto() could insert 32th DBC byte: blk_len overflow.
CanInsInto(): missing checking of sub-group free space
* VID: Video Input Descriptor fields were referencing EDID buffer
instead local instance data.
* Y24C: incorrect total data length: missing DBC header
* groups which have subgroups must call subgroups.CalcDataSZ()
on init().
* removed ForceRefresh (EF_FGR) flag from unknown byte.
Changed
* All T_EDID_FIXED data groups are now operating on local data
buffers. Reparse() restores the loaded EDID state, reverting
all the changes - unless AssembleEDID() or Save/Export is
executed. From this point Reparse() restores the
saved/assembled state.
* Base EDID block: movable blocks are now using
edi_grp_cl::CopyInstData() to create local data instances.
* BlockTree: blocked auto-repeating of all keys except up/down
arrows.
* CEA_BlkHdr_fields[]: removed EF_FGR flags: dedicated handlers
are used.
* CEA_class.cpp: all blocks (excluding the CEA_header) are now
using edi_grp_cl::CopyInstData() to create local data instances
* DTD panel: increased H-size of pix_clk and V-refresh controls -
big values didn't fit. txc_hfreq: reduced fractional part
accuracy to 2 digits, to fit the control size.
* EDID_cl::ParseEDID_CEA(): search DTDs after DBC end, not at
declared DTD offset
* Menu Options->"Recalc Checksum" changed to "Assemble EDID"
* Remapped group IDs, so subgroups IDs can be individually masked
* UpdateEDID_Tree(): only main EDID blocks are automatically
expanded (data sub-groups are not).
* Y42C: removed cea_y42c_cl::gen_data_layout(): no longer needed.
* edi_grp_cl::base_clone() return also the rcode for reporting
errors. Non-critical errors can be now ignored.
* wxEDID_App::CmdLineArgs(): now uses wxCmdLineParser.
* wxEDID_Frame::ClearAll(): clear BlockTree, so if Re-OpenEDID()
fails, the tree stays empty.
* wxEDID_Frame::DTD_Ctor_WriteInt() and WriteField(): log old
field values.
Added
* Auto-reparse DBC group on Tag Code/Extended Tag Code change.
* Basic copy/paste functionality for blocks of the same type.
* Block type ID: T_EDID_FIXED: fixed, single instance block.
Instance data held in EDID buffer. Blocks without the flag set
will keep instance data in local buffers.
* BlockTree context menu: "Insert Into": insert subgroup
@idx == 0.
* BlockTree context menu: "Reparse Group": reparse single group
(root groups only). This allows to re-interpret the group f.e.
after manual editing of "unknown" bytes.
* BlockTree context menu: display additional details in a
sub-menu: abs/relative offsets and block/group free space.
* BlockTree key bindings for Copy/Paste/Cut/Move(Up/Down)
* CEA-DBC header: (Extended) Tag Code selector menus.
* CanPaste/CanInsert: checking parent block free space.
* Checking free space after manual editing of DBC block length.
* Clone() method for all data classes which can be copied.
* DBC_GrpAr_cl: array of DBC sub-groups.
* DBC_GrpAr_cl: paste/insert/move methods specialized for DBC.
* Data Grid: option for showing field details: base offset, shift
and size. Added: menu "Options"->"Block Data: show field
details" Added: config.b_dta_grid_details
* Dynamic data layout support for groups: ADB, VDB, VSD, SAB.
* EDID_cl::AssembleEDID()->CEA_Set_DTD_Offset(): check & update
DTD offset in CEA block.
* EDID_cl::AssembleEDID(): copy local data from movable blocks
back to the main EDID buffer.
* EDID_cl::AssembleEDID(): update block length in DBC headers.
This means that manual changes to the block length are
ignored -> only insert/delete/cut operations can change the
block size.
* GroupAr_cl: specialized derived classes: EDID_GrpAr_cl and
CEA_GrpAr_cl: block-specific implementations of
paste/insert/move methods.
* IFDB: edi_grp_cl::IFDB_Init_SubGrp(): shared init function
for sub-groups.
* Log operations:
Copy/Paste/Delete/Cut/Insert(Up/Down)Move(Up/Down)
* New array class for holding EDID groups: GroupAr_cl: implements
the copy/paste/move operations.
* New data group cea_unkdat_cl: UNK-DAT Unknown Data bytes, used
as a subgroup for representing undefined bytes.
* New field flag: EF_INIT: forced re-initialization of the group.
Flag name is "FR", same as for Forced Group Refresh.
* Saving/restoring AUI layout, window position and size. NOTE:
changed token delimiters, old cfg files have to be re-created.
* Sub-group type ID: T_DBC_FIXED: fixed within DBC, instance data
held in local buffer.
* Subgroups have the same type ID as parent groups + T_DBC_SUBGRP
flag.
* Support for manual editing of DBC block length and Tag Codes:
SAB, VDTC, VSD, UNK-TC, VCDB, HDRS, CLDB, VSVD, VSAD, VFPD,
Editing group trees: ADB, VDB, RMCD
* Support for manual editing of DBC block length and Tag Codes:
SLDB, VDDD, IFDB, HDRD (+ metadata length)
* Y42C, SLOCD: support for handling invalid block lengths.
* cea_sad_cl::byte2_afc2_8: EDID_cl::SAD_BitRate(): handling
values of bitrate in 8kHz units.
* edi_grp_cl::CodeName: code name is now separated from GroupName
* edi_grp_cl::base_DBC_Init_FlatGrp(): update field offsets if
TG_FLEX_OFFS flag is set in group descriptor.
* edi_grp_cl::parent_grp: parent group pointer: needed to update
group data size after inserting/deleting of sub-groups.
* wxEDID_App::CmdLineArgs() new cmd line switches:
- e --ignore-errors, -w --all-writeable.
* wxEDID_Frame::BlkTreeUpdateGrp() try to restore sub-group
selection.
* wxEDID_Frame::ClearAll(): clear edigrp_src ptr and change
mnu_BlkTree info item to miInfoNOK.
* wxEDID_Frame::evt_blktree_rmb(): handler for RMB actions.
* wxEDID_Frame::mnu_BlkTree: RMB menu for selecting block actions
Updated
* Update: manpage: added new cmd line options.
* Update: rcd_autogen v2.3
* Fri Jan 08 2021 Mia Herkt <mia@0x0.st>
- Update to v0.0.22
Fixed
* (BUG) (Thanks to Matthew Evanson): EDID_cl::ParseEDID_CEA():
the number of included DTDs can be greater than the number of
mandatory *native* DTDs specified in
cea_hdr_t.info_blk.num_dtd. Those additional DTDs were silently
ignored in previous wxEDID versions. Additionally, the padding
area after last DTD is now checked (all bytes have to be
zeroed).
* Desription of cea_hdr_t.info_blk.num_dtd field: it should be
explicitly stated, that this is a number of *native* DTDs,
and not the total number of DTDs in the CEA block.
* wxEDID_App::CmdLineArgs(): using wxLogStderr for printing
messages to stderr.
* EDID_cl::ParseDetDtor(): error msg needs EDID block number,
passed by the caller.
* all references to GPLv3 replaced with GPLv3+, to match the
declarations in COPYING.
* makefile.am: strict control of what goes to the 'dist' target.
* don't distribute src/config.h -> this requires a workaround in
wxEDID_Main.h, i.e. defining dummy VERSION symbol when
rcd_autogen is running.
* (BUG) EDID_cl::VSD_ltncy(): unsupported IEEE-OUI codes: don't
overflow if the latency value is zero: mark the field as
unused. Added EF_FGR flags: editing the latency value removes
"unused" flag.
* (BUG) cea_vsd_cl::fields[] max latency value is 500ms, not 251=(500/2)+1.
Changed
* wxEDID_Frame::SaveRep_SubGrps(): export offset values in both
decimal and hex format.
* single top-level makefile.am
* cea_vsd_cl::fields[]: Latency: Added info about 2ms granularity
of values.
* cea_vsd_cl: Updated group description (new IEEE-OUI codes).
Added
* man/wxedid.1 manpage written by Felix Lechner.
Updated
* rcode.h v1.1.0, rcd_autogen v2.1
* Tue Jul 14 2020 Mia Herkt <mia@0x0.st>
- Update to v0.0.21
Fixed
* (BUG): BlockTree: root node was not showing EDID file name if
the file path was provided as an cmd line argument
(both binary and --text).
* (BUG) cea_hdrs_cl::init(): Incorrect min size for
"HDR Static Metadata Data Block" (TagCode=7, ExtTagCode=6):
the min. block size is 3, not 6 bytes. Fields for bytes 4..6
are marked as unused, depending on the block size.
* (BUG) cea_hdrs_cl: incorrect bitfield definitions for reserved
fields: "ET6-7" & "SM1-7"
* Wrong evt ID for importing HEX-text EDID from cmd line arg:
should be id_mnu_imphex, not id_mnu_exphex.
* (Regression) if config file doen't exist, the
config.b_dtd_keep_aspect is set to OFF, but by default it
should be set to ON.
* Fri Jun 05 2020 Mia Herkt <mia@0x0.st>
- Add wxedid-no-implicit-string-conversion.patch
Works around compilation issues with openSUSE’s wxWidgets
packages, which do not enable implicit string type conversion.
- Update to v0.0.20
Added
* Added: Loading/Importing EDID files from path passed as cmd
line argument.
* Added: Save settings: last used directory + last opened file,
dtd_keep_aspect_ratio
Changed
* lower-case name for the final executable: wxEDID -> wxedid
Fixed
* (BUG) cea_y42c_cl::gen_data_layout() never tested: buggy code,
memory corruption. Program crash if EDID data contains
"YCBCR 4:2:0 Capability Map Data Block"
(TagCode=7, ExtTagCode=15)
* Sun Jan 05 2020 Martin Herkt <9+suse@cirno.systems>
- Update to v0.0.19
Fixed
* evt_blktree_sel(): the cell editor must be closed before
switching to newly selected data block. Otherwise the cell
editor can be "orphaned" and its window stays opened until
another cell editor is activated. This problem was visible
only when the cell editor was activated from Value Selector
Menu event and if evt_blktree_sel() was invoked with opened
cell editor.
* EDID_cl::ProdWk(): wxString::operator<<() requires type casting
to <int> when appending a byte -> otherwise <u8_t> is
interpreted as <char>
* menu Options::"Ignore EDID errors" must be always enabled,
because otherwise the option will be unavailable until a valid
EDID structure is loaded.
Added
* Menu Help::Flags & Types: info about flags displayed in the
block data grid.
* Wed Jul 24 2019 Martin Herkt <9+suse@cirno.systems>
- Update to v0.0.18
Fixed
* Removed unused "Hex View" menu item
Added
* Menu Options: "DTD preview: keep aspect ratio": keep aspect
ratio of the DTD preview screen.
* DTD_Constructor: active screen area size is now displayed on
the DTD screen preview. H/V borders are excluded from active
area.
Version: 0.0.17-bp151.1.1
* Sun Dec 23 2018 Martin Herkt <9+suse@cirno.systems>
- Update to v0.0.17
Changed
* Increased default Log Window size from 400x300 to 500x400.
* All panels & controls are now using default system font instead
of fixed one.
Fixed
* (BUG::wxSmith) Menu "Quit" and "About" handlers were connected
dynamically in the frame constructor, even though they were
already present in the static event table.
* Options menu: all menu items except "Log window" should stay
disabled until edid data is loaded/imported.
* Thu Dec 06 2018 Martin Herkt <9+suse@cirno.systems>
- Update to v0.0.16
Added
* support for wxWidgets v3.1.x : *experimental*
Changed
* DTD panel: all the controls are now configured to use default
min sizes - this is rather a disadventage, because f.e. the
default controls in gtk3 are ridiculously big. However,
the minimal App frame size is now re-calculated dynamically,
basing on the min. size reported by the DTD sizer - so this
is a more flexible solution.
* Dropped support for old wxWidgets versions (<3.0.0).
* Changed proportions of AUI panes.
Fixed
* DTD panel: dtd_screen: background was erased twice on resize
event → now the refreshing is performed in a single call to
the paint event.
* wxWidgets v3.1.x wxGrid::SetCellValue(wxString&, int, int)
is deprecated, new version is wxGrid::SetCellValue(int, int,
wxString&)
* wxWidgets v3.1.x: wxEVT_GRID_CELL_CHANGE is no longer
supported → renamed to wxEVT_GRID_CELL_CHANGED
* wxEDID_Frame::evt_frame_size() missing call to sizer->Layout()
→ quick resizing of the frame could cause incorrect placement
of child windows on the DTD panel.
* (BUG::old): DTD_Ctor_WriteInt(): value change event log:
missing field names. Only the first letter of field name was
printed due to missing conversion from ASCII to wxString.
* (BUG::old): EDID_class.cpp: wxString AltDesc wasn't really
initializing the alternative desriptors' "Desc" fields.
Now the AltDesc is just a char string, and the "Desc" fields
are proprly initialized by calling wxString::FromUTF8(AltDesc).
* DTD_Ctor_WriteInt(), WriteField(): value change event log:
print the whole message string in a single call to
guilog::DoLog() - eliminates printing of multiple timestamps
per event.
* Corrected few textual descriptions of EDID fields.
* Tue Nov 28 2017 9@cirno.systems
- update to v0.0.15
* Fixed: (BUG) RCD_RETURN_FALSE() returns RCD_TRUE
* Mon Oct 30 2017 9@cirno.systems
- update to v0.0.14
* Update: guilog.h v0.2
* Fixed: Info panel: BG & FG colors were theme-dependent, which
could make the panel look "ugly" or even completely unreadable.
Now the FG is forced to black and the BG is white.
* Tue Sep 05 2017 9@cirno.systems
- update to v0.0.13
* Fixed: (GCC 6.x): silenced some warnings (false-positives)
regarding "possibly unitialized variables" in EDID_class.cpp
* Fixed: (GCC 6.x, C11 mode): wxEDID_Main.h: C11 requires a space
between literal and string macro [-Wliteral-suffix].
* Update: returncode.h v0.8.3
* Sat Apr 01 2017 9@cirno.systems
- Initial commit