Beispiel #1
0
	QPainterPath FrameCd::marginPath( const Distance& size ) const
	{
		Distance wReal = (mW == 0) ? 2*mR1 : mW;
		Distance hReal = (mH == 0) ? 2*mR1 : mH;

		Distance r1 = mR1 - size;
		Distance r2 = mR2 + size;

		QPainterPath path;

		/*
		 * Construct outer subpath (may be clipped if it's a business card CD)
		 */
		QPainterPath outerPath;
		outerPath.addEllipse( (wReal/2 - r1).pt(), (hReal/2 - r1).pt(), 2*r1.pt(), 2*r1.pt() );

		QPainterPath clipPath;
		clipPath.addRect( size.pt(), size.pt(), (wReal-2*size).pt(), (hReal-2*size).pt() );

		path.addPath( outerPath & clipPath );
		path.closeSubpath();

		/*
		 * Add inner subpath
		 */
		path.addEllipse( (wReal/2 - r2).pt(), (hReal/2 - r2).pt(), 2*r2.pt(), 2*r2.pt() );

		return path;
	}
Beispiel #2
0
	FrameCd::FrameCd( const Distance& r1,
			  const Distance& r2,
			  const Distance& w,
			  const Distance& h,
			  const Distance& waste,
			  const QString&  id )
		: Frame(id), mR1(r1), mR2(r2), mW(w), mH(h), mWaste(waste)
	{
		Distance wReal = (mW == 0) ? 2*mR1 : mW;
		Distance hReal = (mH == 0) ? 2*mR1 : mH;

		//
		// Create path
		//
		{
			/*
			 * Construct outer subpath (may be clipped if it's a business card CD)
			 */
			QPainterPath outerPath;
			outerPath.addEllipse( (wReal/2 - r1).pt(), (hReal/2 - r1).pt(), 2*r1.pt(), 2*r1.pt() );

			QPainterPath clipPath;
			clipPath.addRect( 0, 0, wReal.pt(), hReal.pt() );

			mPath.addPath( outerPath & clipPath );
			mPath.closeSubpath();

			/*
			 * Add inner subpath
			 */
			mPath.addEllipse( (wReal/2 - r2).pt(), (hReal/2 - r2).pt(), 2*r2.pt(), 2*r2.pt() );
		}

		//
		// Create clip path
		//
		{
			Distance r1Clip = mR1 + mWaste;
			Distance r2Clip = mR2 - mWaste;
			Distance wClip = (mW == 0) ? 2*r1Clip : mW + 2*mWaste;
			Distance hClip = (mH == 0) ? 2*r1Clip : mH + 2*mWaste;

			/*
			 * Construct outer subpath (may be clipped if it's a business card CD)
			 */
			QPainterPath outerPath;
			outerPath.addEllipse( (wReal/2 - r1Clip).pt(), (hReal/2 - r1Clip).pt(), 2*r1Clip.pt(), 2*r1Clip.pt() );

			QPainterPath clipPath;
			clipPath.addRect( -mWaste.pt(), -mWaste.pt(), wClip.pt(), hClip.pt() );

			mClipPath.addPath( outerPath & clipPath );
			mClipPath.closeSubpath();

			/*
			 * Add inner subpath
			 */
			mClipPath.addEllipse( (wReal/2 - r2Clip).pt(), (hReal/2 - r2Clip).pt(), 2*r2Clip.pt(), 2*r2Clip.pt() );
		}
	}