{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":89644588,"defaultBranch":"master","name":"Ygor","ownerLogin":"hdclark","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-04-27T22:14:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/934858?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1679679087.0","currentOid":""},"activityList":{"items":[{"before":"8e27a005407873af87a08b7f78559e891ba1490f","after":"32b957fec1555f5f004edc4d77942c5844c012d7","ref":"refs/heads/master","pushedAt":"2024-08-16T18:22:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"YgorImages: harmonize ortho_unit calculations.","shortMessageHtmlLink":"YgorImages: harmonize ortho_unit calculations."}},{"before":"23c928c17ec281adba5183068e60eeab741dc379","after":"8e27a005407873af87a08b7f78559e891ba1490f","ref":"refs/heads/master","pushedAt":"2024-08-06T22:16:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"README: updated date.","shortMessageHtmlLink":"README: updated date."}},{"before":"04cf41310026fe2d45b8741249b53a1867d3e4e2","after":"23c928c17ec281adba5183068e60eeab741dc379","ref":"refs/heads/master","pushedAt":"2024-05-16T17:36:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"Add missing include to test case.","shortMessageHtmlLink":"Add missing include to test case."}},{"before":"d72cd9efb2fd472b11d31c55aa24fb92ee7a0eee","after":"04cf41310026fe2d45b8741249b53a1867d3e4e2","ref":"refs/heads/master","pushedAt":"2024-05-16T17:10:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"Add missing include.","shortMessageHtmlLink":"Add missing include."}},{"before":"4aacd45a7883e2b505816ab044b4f98919b43809","after":"d72cd9efb2fd472b11d31c55aa24fb92ee7a0eee","ref":"refs/heads/master","pushedAt":"2024-01-19T18:06:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"Remove semicolon after constructor to remove pedantic warning.","shortMessageHtmlLink":"Remove semicolon after constructor to remove pedantic warning."}},{"before":"203b741708e28c5b5fdc187134102df1fcd3e66e","after":"4aacd45a7883e2b505816ab044b4f98919b43809","ref":"refs/heads/master","pushedAt":"2023-10-03T19:15:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"YgorImages: re-define row and column orientation unit vectors.\n\nPreviously, the implementation used a confusing and inconsistent blend of interpretations where the row and column unit\nvectors would either refer to the direction *along* a row/column, or *between* rows/columns. Part of this inconsistency\nwas the interpretation of the pixel width and height, which were frequently swapped, and correct placement of the row\nand column during indexing.\n\nNote that the rationale behind the previous implementation was to try keep the implementation flexible and agnostic to\nthe specific way that pixels/voxels were encoded. However, since the implementation now provides export to a number of\nformats (where the conventions *do* matter), the implementation is now being harmonized.\n\nThis commit swaps the implementation to the convention where row_unit and col_unit define the direction *along* a\nrow/column. There is still sufficient opportunity for confusion going forward due to the name 'row_unit' and 'col_unit',\nespecially when combined with row and column counts for spatial positioning. So here is a summary guide:\n\n| Interpretation and Conventions:\n| top-left corner of an image: row = 0, column = 0 voxel\n| bottom-left corner of an image: row = (number_of_rows - 1), column = 0 voxel\n| top-right corner of an image: row = 0, column = (number_of_columns - 1) voxel\n|\n| image anchor + image_offset = 3D position of the centre of the row = 0, column = 0 voxel\n|\n| row_unit = unit vector *along* a row\n| col_unit = unit vector *along* a column\n|\n| pxl_dx = voxel width\n| pxl_dy = voxel height\n| pxl_dz = voxel thickness / spatial depth (when viewed as a 2D image)\n|\n| Adjacent voxels:\n| R' = R + row_unit * pxl_dx <--- translating along the same row, but different columns\n| R' = R + col_unit * pxl_dy <--- translating along the same column, but different rows\n|\n| Indexing:\n| R' = R + row_unit * pxl_dx * column_number <--- translates to the given column number\n| + col_unit * pxl_dy * row_number <--- translates to the given row number\n|\n| Constructors:\n| planar_image<>.init_spatial(dx, dy, dz, ...) = planar_image<>.init_spatial(width, height, dz)\n|\n| DICOM 'PixelSpacing' = 'dy/dx' = height/width\n|\n| Image dimensions:\n| pxl_dx * number_of_columns = width of an image\n| pxl_dy * number_of_rows = height of an image\n| pxl_dz = thickness of an image\n|\n| Forbidden combinations, which do not make sense:\n| pxl_dx * row_number\n| pxl_dy * column_number\n|\n| row_unit * row_number\n| col_unit * column_number\n|\n| row_unit * pxl_dy\n| col_unit * pxl_dx","shortMessageHtmlLink":"YgorImages: re-define row and column orientation unit vectors."}},{"before":"ce7e8ef602dfa481f1a9d097e9445f00c5350ac7","after":"203b741708e28c5b5fdc187134102df1fcd3e66e","ref":"refs/heads/master","pushedAt":"2023-05-24T22:18:45.636Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"YgorLog: add log level increment and decrement.\n\nThese operations are useful for implementing '--verbose' and '--quiet' command line switches.","shortMessageHtmlLink":"YgorLog: add log level increment and decrement."}},{"before":"08acad2611da836ad09ae99603d0ad34e79e3d38","after":"ce7e8ef602dfa481f1a9d097e9445f00c5350ac7","ref":"refs/heads/master","pushedAt":"2023-05-24T21:51:25.706Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"YgorLog: add more precise verbosity control.\n\nThis commit adds both environment variable and member function getters/setters for verbosity control.\nMessages sent to different emitters (i.e., terminal and user-callback) have separate verbosity settings,\nthough a generic environment variable can be used to set all emitter verbosities at once.","shortMessageHtmlLink":"YgorLog: add more precise verbosity control."}},{"before":"be23810ff41961a25bbcb749f359da5d8d8cc60e","after":"08acad2611da836ad09ae99603d0ad34e79e3d38","ref":"refs/heads/master","pushedAt":"2023-05-17T23:39:15.446Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"YLOG: add debug level.\n\nThis level is normally hidden by the terminal. Control of the default terminal print level is controlled by an\nenvironment variable. Other emitters are not subject to the minimum level, e.g., registered user callbacks.","shortMessageHtmlLink":"YLOG: add debug level."}},{"before":"ba49eb64dc2044811b9c6204a4a313f0e33ec5c9","after":"be23810ff41961a25bbcb749f359da5d8d8cc60e","ref":"refs/heads/master","pushedAt":"2023-05-04T15:37:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"Harmonize check_syntax with DCMA.","shortMessageHtmlLink":"Harmonize check_syntax with DCMA."}},{"before":"ceb179d0ef95043b9809eb25ded9dbebade0cc55","after":"ba49eb64dc2044811b9c6204a4a313f0e33ec5c9","ref":"refs/heads/master","pushedAt":"2023-04-26T20:43:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hdclark","name":"Hal Clark","path":"/hdclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934858?s=80&v=4"},"commit":{"message":"Replace implicit size_t in Xtostring().\n\nThere appears to be continued issues with implicit integer casting on some systems. In particular, use of\nXtostring(size_t) causes linking ambiguities with gcc toolchain on macosx. This commit provides an explicit cast to\nXtostring