Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better UIImage Support #106

Merged
merged 5 commits into from
Jan 4, 2016
Merged

Conversation

bcapps
Copy link
Contributor

@bcapps bcapps commented Dec 24, 2015

This pull request is a proposal to improve the public API of NYTScalingImageView and the internal code of both that class and NYTPhotoViewer to elevate using normal UIImages to a first-class behavior after the addition of animated GIF support.

Currently, on develop, NYTScalingImageView only has APIs that support NSData, which means that NYTPhoto objects that only contain a non-animated UIImage are shoehorned into an API that then causes UIImages to be converted to data (a potentially metadata-lossy conversion) in order to call these APIs, and then back to UIImage objects internally in those methods. This is both less performant and more complex than an API that treats UIImage and NSData equally, as they are in the NYTPhoto protocol. This pull request adds that API and removes the need for converting images to data and then converting that data back to images again.

Additionally, the docs for these new APIs that take NSData were never updated to reflect that fact, so I have also updated those in this pull request.

…iew.

Previously, these public methods only took NSData, which would mean
converting regular UIImages into data and later back into images –
which is both more complex logic and less performant. Additionally,
UIImage, as the more common case than an animated image, should
conceptually be a first-class citizen and the public APIs, in my
opinion, now reflect that status.
…priately.

Before it considered everything data and was making unnecessary (and
metadata-lossy) conversions of UIImages to PNG data.
@livings124
Copy link
Contributor

+1, this would fix some speed issues we're having

@Twigz
Copy link
Contributor

Twigz commented Jan 4, 2016

Proposal accepted, please fix conflicts and add tests.

@bcapps bcapps changed the title Proposal: Better UIImage Support Better UIImage Support Jan 4, 2016
@bcapps
Copy link
Contributor Author

bcapps commented Jan 4, 2016

Okay. I've resolved the merge conflicts and added the tests. A couple notes:

  • Since there are now two initializers that require mutually exclusive data, I've changed the nullability attribute from nullable to the implicit nonnull. This change was intentional, since you shouldn't call one of the two initializers without this object present.
  • The nullability change seeped into the tests, where instead of passing nil I now just pass an initialized object.
  • I also removed NYTViewController from the test target because it is not necessary for running the tests and was skewing the code coverage metric (which is now at 100% after that change).
  • I have not updated the Swift test target because it looks like that target has not been updated in some time and contains many errors unrelated to these changes.

@cdzombak
Copy link
Contributor

cdzombak commented Jan 4, 2016

👍

1 similar comment
@dzlobin
Copy link
Contributor

dzlobin commented Jan 4, 2016

👍

dzlobin added a commit that referenced this pull request Jan 4, 2016
@dzlobin dzlobin merged commit 90d3057 into nytimes:develop Jan 4, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants