public IndirectFrame(Frame source, int x_offset, int y_offset, int width, int height) {
		super(width, height);
		if (x_offset < 0 || x_offset >= source.getWidth() ||
			y_offset < 0 || y_offset >= source.getHeight() ||
			x_offset + width > source.getWidth() ||
			y_offset + height > source.getHeight()) {
			throw new IllegalArgumentException("Indirect frame specification is illegal.");
		}

		this.source = source;
		this.x_offset = x_offset;
		this.y_offset = y_offset;
		source_area = new FrameArea(x_offset, y_offset, x_offset+width-1, y_offset+height-1);

		source.registerFrameObserver(this);
	}