vcmenu_show() now prints a warning if unable to backup background image.vcmenu_show() now also works with 0x7f as backspace.vc_lut2d2dhmg_hmg_map() for bigger number ranges.chprint_4x6_select(), chprint_script_26_32().copy_with_bitmask(), merge_with_bitmask(), set_with_bitmask().vc_base64_encode(), vc_base64_decode(), vc_sha1().rlc_move() if movement is bigger than the rlc image.vc_bestfit_poly2d1d_calculate_maxDev() result.ImageOffset().AND_image().rlc_print_line_compact().vc_line_greys() and vc_line_greys_scaled().vcmenu_init_vcbcinit().linear_regression().image struct including the IMAGE_ types at the flib's/powerlib's vctypes.h the vclib's declaration at the vclib.h has been gated.rlc_zoom() and enhanced it for downzooming.chprint_4x6().fwrite_image_vector_color().rlc_label_fast() for faster labelling using extra information.fread_image_size() to read BMP size beforehand.vc_slc_neighbour44_equivalence().vc_median_anisotropic_1x9() and vc_median_anisotropic_1x9_padded().rlcand_slc().vc_clc...().vc_corr_census() and surroundings for doing a Census Correlation.vc_bestfit_poly2d2d_calculate_poly_errorband() which handles bands.NormalizedCorrelation() function at mode 1.main().rlc_mask_image() for small dst dx sizes.vc_lut2d2dhmg_map() and Hough Linefinder.VCPolynom2D1D struct and functions for it.VCPolynom2D2D and VCPolynom1D1D as well as at VCMenu.vc_cam_init().vc_bestfit_poly1d1d_calculate_chiSquare().init_debug_display().rlc_sgmt44().nonmax_suppression() now accepts in-place IMAGE_VECTOR.vc_svg_text() and vc_svg_doc_view().int types by its more specific type I32.vc_svg_() to generate SVGs (Scaleable Vector Graphics), handy for annotating pixel images with debug information.IntersectionPointsWithRect()vc_lutU8_generate_*() functions.vcmenu_store_values_in_file() to accept arbitrary string lengths by allocating a buffer.edgecontour(), GetLibVerString_VCLIB().histo_U32_value_quantile(), vc_poly1d1d_copy(), vc_poly2d2d_copy(), vc_draw_edgecontours_(), PL_transform(), vc_bestfit_poly1d1d_successive(), vc_poly1d1d_get_scale(), vc_successive_fit(), LineTranslate(), vc_centerpoint(), vc_centerpoint_successive_fit(), fread_rlc() posix variant, chprint_centered_at_pos_lines(), rlcout_pixellist(), vc_poly1d1d_line_intersection(), vc_poly2d2d_pow_get/set(), ImageROI(), PointLineProjection(), vc_poly1d1d_derive_and_allocate(), vc_poly1d1d_zero_crossing(), VCPolynom1D1D and vc_bestfit_poly1d1d_...().chprint_centered_at_pos_lines() at bottom right border.vcmenu_read_values_from_file(), the following pair matched before: menu variable 'ABC' == key in file 'ABCD'.vc_libvclib_check_header_ver() to be able to check header version with library version.vclib5 to link against vclib6:laplace() to vc_laplace().draw_line() to vc_draw_line().draw_lined() to vc_draw_lined().draw_linex() to vc_draw_linex().draw_vclined() to vc_draw_vclined().draw_vclinex() to vc_draw_vclinex().draw_polygon() to vc_draw_polygon().draw_polygond() to vc_draw_polygond().draw_polygonx() to vc_draw_polygonx().draw_circle() to vc_draw_circle().draw_circled() to vc_draw_circled().draw_circlex() to vc_draw_circlex().EVarType to VCType.TYPE_... to VCTYPE_....strEnumVarType to str_VCType.bytesEnumVarTypeto bytes_VCType.SVCMenu* to VCMenu*.NULL_SVCMENU to NULL_VCMenu.rl_color().rlcmkv().fwrite_jpeg() also works now under linux.HoughCircleTransform().barcode_search_omnidirectional_continue() Memory Leak.rlc_mirrorH().histo_at_rlc(), histo_grey_value_quantile(), rlc_fill_polygons_simple().rlc_select_by_polygon_simple(), rlc_draw_polygon().mom_calc_ai1(), mom_calc_ai2(), mom_calc_ai3().fill_polygon_simple(), vc_line_restrict_to_image(), rlc_drawlinesegment().NormalizedCorrelation() and NormalizedCorrelationI32_2().LinePerpendicular() in-place now.mom_calc_phi3() and mom_calc_phi4().BarPar,SBCSettings,SBCRegion Struct and Selector DefinesSSFSettings, SSFPattern, SSFResult Struct and initializers.QuietZoneSize and DmSearchContr to DMParameter (->v.21).gradient_3x3() and gradient_3x3_threshold() change.rlcinv(), rlc_feret/2().draw_histo()rlc_move().BarCorrV2().bin0() (e.g. binarize()) if dst->dx/dy < src->dx/dy.area_grey_value_quantile(), zoom_up_xy(), rlcmk_sub(), rlc_cutframe(),rlc90(),rlc180(),rlc_mirrorH(),rlc_mirrorV(), rlc_shear_x(),rlcmk_seed(),rlcmk_seed2(),rlc_rect(),rlc_drawline(), rlc_movef2(),rlc_movef_repeatBorderCol(),sf_pattern_draw().VCLIB_MAINVERSION as major versionChangeValue: changed parameter from I8 * to char *FAST define from vclib.h.edgecontours_from_edgeimage() and edgecontour(): Changed Threshold Handling directly at Threshold Value (Pixel value >= Threshold now belongs to the contour (before only >)). This leads to HoughCircle binarization threshold handling at threshold grey value now fits to the old behaviour again.str_imageType() macro.IMAGE_UNSET.draw_polygond/x() and draw_polylined/x()vc_license_init_file(), etc.DO_RELEASE_POINTERS used by pointer lists.edgecontours_from_edgeimage(): Added maglist and dirlist.edgecontour(): Added maglist and dirlist.subpixel_edgecontour(): Added maglist.ImgConvert_I32_U8(image \*Src32, image \*Dst): Src32.dx and Src32.dy now remain unchanged.pmed5x5() and pmed7x7().median3() now returns standard error code.HoughCircleTransform() now destroys edge input image. This was a necessary part of a bugfix. If you need the image afterwards, be sure to back up it prior.SetFalseColorLUT().FindMax32(), FindMaxImage16(), and FindMaxImage8() can now handle NULL pointers for coordinates.rlcmkfc() to flib.complete doxygen documentation added on::
affine_image_transform3() using biquadratic interpolationmedian1xN() 1xN median filtermedianNx1() Nx1 median filterbarcode_search_omnidirectional()GradientAngle() to compute an average direction out of a gradient image. (GradientAngle() - REMARK for alpha users of the function: definition of angle changed)rlcmkv() for vertical RLC generationNormalizedCorrelation(), NormalizedCorrelationI32(), BarCorrV() and BarCorrV2() added: correlation for vertically structured objects like barcodeLineParallel(), LineParametersA(), VectorDifference(), VectorSum, etc.homography_image_transform() for homographic image transformfourpoint_calculate() to calculate the homography from 4 pointsrlc90() to rotate RLC by 90 degreeshysteresis_RLC(). RLC generation with hysteresis thresholdingbox_DoG_filter(): Difference-of-Gaussian filter with arbitrary sizeFindLines() simplifying the use of the Hough Transform for linesHoughRectangle() to search for arbitrary rectangles in an edge imageImageAllocateEdge() to allocate an image with a border around itrlc_delete(): function now returns (U16 *), functionality improvededgecontours_from_edgeimage() to extract contours from an edge image.subpixel_edgecontour(): subpixel precise edge detectionblock_orientation_histogram_16x16()gradient_3x3_thresh(): gradient image with thresholddraw_histo() for histogram displayrlc_feret() and rlc_minmax_feret() to calculate RLC projections in any (all) direction(s)rlc_getobject(), rlc_keep_object(), rlc_zoom()changed definition of djpeg_b macro to::
#define djpeg_b(img) djpeg(img, 1L, (int (*)())rd_binary)
was::
#define djpeg_b(img) djpeg(img, 0L, (int (*)())rd_binary)
new definition gives correct return value = 1L when function terminates properly.