Add texture areas

This PR is an extraction of #533.
It provides texture areas.
You could add a `unlikely()` here, if that code is performance ciritcal...