Coder Social home page Coder Social logo

Comments (2)

willhansen avatar willhansen commented on July 26, 2024

Doesn't look like it's implemented (really should be though).

Possible workarounds include:

  • A bunch of parallel line segments really close together
  • A polygon

https://docs.rs/imageproc/latest/imageproc/drawing/fn.draw_polygon.html
https://docs.rs/imageproc/latest/imageproc/drawing/fn.draw_line_segment.html
https://docs.rs/imageproc/latest/imageproc/drawing/fn.draw_antialiased_line_segment.html

from imageproc.

SamyAB avatar SamyAB commented on July 26, 2024

I agree that it is something that I would expect from a shape drawing function. It is an option in most tools, programmatic or GUIs.

I could try submitting a PR for it, but what would be the API? Would it be adding new functions suffixed by _with_thickness, or adding a parameter to the currently available functions (i.e. a breaking change)?

What about the offset of the thickness, should it always be a on a single side of the shape? If yes which side? Should it be on both side? If yes what side should thicker when the thickness is an odd number?

Assuming the addition of new functions suffixed by _with_thickness, with a one sided offset, a naive implementation for the hollow rectangle would look something like this

fn draw_hollow_rect_with_thichness<I>(
    image: &I,
    rect: Rect,
    color: I::Pixel,
    thickness: u16,
) -> Image<I::Pixel>
where
    I: GenericImage,
{
    let rect_x = rect.left();
    let rect_y = rect.top();
    let rect_width = rect.width();
    let rect_height = rect.height();
    let mut image_with_rectangle = drawing::draw_hollow_rect(image, rect, color);

    for offset in 0..thickness {
        let thickness_rect = Rect::at(rect_x - i32::from(offset), rect_y - i32::from(offset))
            .of_size(
                rect_width + 2 * u32::from(offset),
                rect_height + 2 * u32::from(offset),
            );
        drawing::draw_hollow_rect_mut(&mut image_with_rectangle, thickness_rect, color);
    }

    image_with_rectangle
}

WDYT?

from imageproc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.