In general most SDL code is hidden away in more low-level classes, like Game, Surface, Action, etc, but it's impossible to completely abstract away SDL without duplicating work (eg. replicating SDL structs, etc).
I have considered moving all the primitive/drawing routines to Surface before (eg. replace SDL_FillRect with some Surface::drawRectangle), I just never got around to it because the drawing operations I use tend to vary a lot. But if you want to do it, go ahead.