On Thu, 15 May 2025 20:18:04 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/com/sun/javafx/iio/common/ImageTools.java
>>  line 166:
>> 
>>> 164:         return true;
>>> 165:     }
>>> 166: 
>> 
>> 1. Is looking for a slash going to be compatible on all platforms?  Where is 
>> the path string coming from?
>> 2. Catching `NumberFormatException` to "check" if something is a number is 
>> bad form
>> 3. It will allow `@0x` and `@-1x` etc...
>> 4. Consider using a regular expression, it is much more concise and intended 
>> for this kind of matching
>> 
>> Here's a regular expression for this:
>> 
>>     Pattern SCALED_PATTERN = Pattern.compile(".*@[1-9][0-9]?x(\.[^\.]+)?");
>>     
>> The above will match any path that ends with `@` followed by a number from 1 
>> to 99, followed by an `x`, optionally followed by an extension that does not 
>> contain a dot.  No need to check for slashes.
>
> If you want you can even return the scale with a slightly altered pattern:
> 
>      private static final Pattern SCALED_PATTERN = 
> Pattern.compile(".*@([1-9][0-9]?)x(?:\.[^\.]+)?");
>      
> Then do:
> 
>      Matcher matcher = SCALED_PATTERN.matcher(path);
>      
>      if (matcher.matches()) {
>           return Integer.parseInt(matcher.group(1));  // can't throw 
> NumberFormatException, number is validated by pattern
>      }
>      
>      return 0;  // there was no scale

>Is looking for a slash going to be compatible on all platforms? Where is the 
>path string coming from?

My assumption was that other parts of ImageTools use this assumption so here it 
would be okay as well. `getScaledImageName` right above this method assumes so 
(although there it might not matter as much).

Regex might be a better fit for this, I agree.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1809#discussion_r2092390883

Reply via email to