Ok. Solved it by rethinking the old code. Given it was one texture like a spritesheet, I stored the piece of texture I needed for each of the 23 patterns in and array of sf:IntRect. Then when I need a particular pattern I just do a setTexture for the sprite.
//draw top pattern
top = PieceTop[piece] >> 5;
Patterns.setTextureRect(PatternData[top]);
Patterns.setPosition(sf::Vector2f(X, Y));
Window.draw(Patterns);
//draw right
right = PieceRight[piece] >> 10;
Patterns.setTextureRect(PatternData
);
Patterns.setRotation(sf::degrees(90));
Patterns.setPosition(sf::Vector2f(X + sprite_size, Y));
Window.draw(Patterns);
Patterns.setRotation(sf::degrees(0));
.
.
.