- Queries
- All Stories
- Search
- Advanced Search
Advanced Search
May 26 2017
May 25 2017
I was able to reproduce the KisPaintInformation::drawingDistance() warning message. It seems to happen whenever certain curve options, including Size and Rate, are set to depend on Distance. I think the problem comes from my separation of the painting code from the spacing update code. I believe the distance info is registered with the KisPaintInformation when calling doPaintAt, but not when calling doUpdateSpacing. Therefore, spacing updates that depend on the distance information being registered encounter problems.
May 24 2017
The reason I added paintPointOrLine was because of a weird problem I was having where KisToolFreehandHelper::paintLine wouldn't seem to paint anything (when airbrushing) until KisToolFreehandHelper::paintAt had been called at least once. So I added it to make sure KisToolFreehandHelper::paintAt would get called at the start of the stroke. I will study the code more and try to come up with a better solution, as paintPointOrLine was really just a workaround for a problem I didn't fully understand.
May 23 2017
I guess my changes could potentially cause a performance problem with the high frequency of tablet events. Maybe I should change it so that the spacing information doesn't update on every tablet event, but instead every x milliseconds?
@dkazakov:
Now that you mention it, I think we could remove KisPaintOp::paintAt. KisPaintOp::updateSpacing is used in KisPaintOpUtils::paintLine to allow for updating the spacing between dabs. I needed to include the ability to update spacing information between dabs because otherwise, if the user has regular spacing disabled and the airbrush rate temporarily goes to zero due to the pressure curve, no more dabs will be painted until the spacing information changes. Without spacing updates between dabs, this causes the stroke to get stuck and not paint any more dabs.
May 21 2017
This new patch removes the existing airbrush feature and replaces it with the new movable airbrush feature. The timed spacing settings have been moved into the Airbrush tab. An option to disable the regular distance-based spacing when airbrushing has also been added to the Airbrush tab.
May 18 2017
I think I have fixed the bad logic in KisDistanceInformation::getNextPointPositionTimed now, but the timing stability issue is still present. I am experiencing some level of trouble even with the existing airbrush tool, as shown in the attached screenshot. The problem seems to be less noticeable when a slower airbrush rate is used, as the regular distance-based spacing can then "take over" for fast-moving strokes. I noticed that GIMP's airbrush tool limits the rate to 15 dabs per second, while MyPaint limits it to 80. Maybe we just need to set a lower limit on the rate? I will try to get on IRC to discuss this when I can.
I think I have found the cause of the bug where the Size slider would get disabled. I have submitted a fix in D5907: Fix disabling of Size and Flow sliders.
Fixed faulty logic in KisDistanceInformation::getNextPointPositionTimed
May 17 2017
Thanks for the feedback. I will look into the issues you mentioned. I agree with the invariant "With any settings of Spacing (SP) and Timed spacing (TSP) the dabs should be painted either on every 1/TSP ms or every SP pixels, whatever happens first." If that isn't happening, there is something wrong with my code. I will try to get on IRC soon, though IRC communication may be a bit difficult, as I am in the UTC-5 time zone.
May 15 2017
Removed an accidental change that had removed the "override" keyword from a destructor declaration.