Hello sir,

I am sending you this patch as a part of my project.
This patch is for creating a polygon instead of rectangle for insets.
Polygon will end at the end of last row. So immediate text after inset
can be continued from that point in same line. I have tested it for
box-insets and notes. At this point it draws only polygon and
immediate text out of inset still starts from next line but I will try
to add that in my next patch.

Thank You.

On 3/11/14, Mitul Modi <mitulmod...@gmail.com> wrote:
> Yes sure sir,
> I am working on it and I will submit my work as soon as possible.
>
> Thank you.
>
> On 3/10/14, Vincent van Ravesteijn <v...@lyx.org> wrote:
>> On Sun, Mar 9, 2014 at 2:43 PM, stefano franchi
>> <stefano.fran...@gmail.com> wrote:
>>> On Sun, Mar 9, 2014 at 1:16 AM, Mitul Modi <mitulmod...@gmail.com>
>>> wrote:
>>>> Hello sir,
>>>>
>>>> Extremely Sorry for delay in reply but I was busy with my academic
>>>> exams, but during this time I got familiar with Lyx and insets.I have
>>>> explored Lyx source code. I have taken bug(ticket : 8829) and will
>>>> submit patch soon.
>>>> As you told me to contact you after exploring code base and GSoC
>>>> Project application submission starts from tomorrow, I think it is
>>>> right time to discuss about project(Implement 3-box drawing of
>>>> insets). So if you can give more detail about project,it will be
>>>> helpful.
>>>>
>>>
>>> Hi Mitul,
>>>
>>> welcome back!
>>> There is a general description of the project on Lyx's GSOC 2014 web
>>> page. You mentioned that you are now familiar with Lyx's code for
>>> insets. Perhaps you could try to apply your newly acquired knowledge
>>> to the problem as described in the LyX page and suggests how you wold
>>> approach it? Then the people on the list can comment on your proposed
>>> strategy.
>>>
>>
>> Yes, I think it would be good to see how familiar you are now with the
>> code, and the insets. Maybe you could propose a few little patches and
>> explaining what they would do.
>>
>> I'm not expecting full bug fixes, but just a little step towards a
>> three-box model, or something like that.
>>
>> Vincent
>>
>
>
> --
> Regards
>
> Mitul Modi
> B.E. Computer Engineering,
> Birla Vishvakarma Mahavidhyalaya,
> Vallabh Vidhyanagar - 388 120
> India
>


-- 
Regards

Mitul Modi
B.E. Computer Engineering,
Birla Vishvakarma Mahavidhyalaya,
Vallabh Vidhyanagar - 388 120
India
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index d8df08c..8831ae9 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -187,10 +187,10 @@ bool TextMetrics::metrics(MetricsInfo & mi, Dimension & dim, int min_width)
 	dim_ = Dimension();
 	dim_.wid = min_width;
 	pit_type const npar = text_->paragraphs().size();
-//	if (npar > 1)
+	if (npar > 1)
 		// If there is more than one row, expand the text to
 		// the full allowable width.
-//		dim_.wid = max_width_;
+		dim_.wid = max_width_;
 
 	//lyxerr << "TextMetrics::metrics: width: " << mi.base.textwidth
 	//	<< " maxWidth: " << max_width_ << "\nfont: " << mi.base.font << endl;
diff --git a/src/frontends/Painter.h b/src/frontends/Painter.h
index 7f2f4bd..d219b1b 100644
--- a/src/frontends/Painter.h
+++ b/src/frontends/Painter.h
@@ -92,9 +92,6 @@ public:
 	virtual void rectangle(int x, int y, int w, int h, Color,
 		line_style = line_solid, float line_width = thin_line) = 0;
 
-	/// draw Polygon for three box implementetion of insets
-	virtual void polygon(int const * xp, int const * yp, int np, Color col,line_style=line_solid,float linewidth=thin_line)=0;	
-		
 	/// draw a filled rectangle
 	virtual void fillRectangle(int x, int y, int w, int h, Color) = 0;
 
diff --git a/src/frontends/qt4/GuiPainter.cpp b/src/frontends/qt4/GuiPainter.cpp
index 67a3d05..db18858 100644
--- a/src/frontends/qt4/GuiPainter.cpp
+++ b/src/frontends/qt4/GuiPainter.cpp
@@ -230,31 +230,6 @@ void GuiPainter::rectangle(int x, int y, int w, int h,
 }
 
 
-void GuiPainter::polygon(int const * xp, int const * yp, int np, Color col,line_style ls,float lw)
-{
-	if (!isDrawingEnabled())
-		return;
-
-	// double the size if needed
-	static QVector<QPoint> points(32);
-	if (np > points.size())
-		points.resize(2 * np);
-
-	bool antialias = false;
-	for (int i = 0; i < np; ++i) {
-		points[i].setX(xp[i]);
-		points[i].setY(yp[i]);
-		if (i != 0)
-			antialias |= xp[i-1] != xp[i] && yp[i-1] != yp[i];
-	}
-	setQPainterPen(computeColor(col), ls, lw);
-	bool const text_is_antialiased = renderHints() & TextAntialiasing;
-	setRenderHint(Antialiasing, antialias && text_is_antialiased);
-	drawPolygon(points.data(), np);
-	setRenderHint(Antialiasing, false);
-}
-
-
 void GuiPainter::fillRectangle(int x, int y, int w, int h, Color col)
 {
 	if (!isDrawingEnabled())
diff --git a/src/frontends/qt4/GuiPainter.h b/src/frontends/qt4/GuiPainter.h
index ee3fcf7..a295078 100644
--- a/src/frontends/qt4/GuiPainter.h
+++ b/src/frontends/qt4/GuiPainter.h
@@ -65,15 +65,7 @@ public:
 		Color,
 		line_style = line_solid,
 		float line_width = thin_line);
-	/// draw Polygon for three box implementetion of insets
-	virtual void polygon(
-		int const * xp,
-		int const * yp, 
-		int np, Color col,
-		line_style=line_solid,
-		float linewidth=thin_line);	
-	
-	
+
 	/// draw a filled rectangle
 	virtual void fillRectangle(
 		int x, int y,
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 1d57b66..5c0c113 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -211,66 +211,8 @@ void InsetText::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetText::draw(PainterInfo & pi, int x, int y) const
 {
 	TextMetrics & tm = pi.base.bv->textMetrics(&text_);
-	pit_type pit = pi.base.bv->cursor().pit();
-	ParagraphMetrics pm = tm.parMetrics(pit);
-	
-	//get dimensions of first row of paragraph
-	Dimension dim1 = pm.rows().front().dimension();
-	//get dimensions of second row of paragraph
-	Dimension dim2 = pm.rows().back().dimension();
-//	lyxerr<<"********dim1:"<<dim1.height()<<" "<<dim1.width()<<"*******dim2:"<<dim2.height()<<" "<<dim2.width()<<endl;
-//	lyxerr<<"********x:"<<x<<" y:"<<y<<endl;
-	int w1=dim1.width();
-	int w2=dim2.width();
-	//total height of inset
-	int h=tm.height();
-	//height of one row
-	int h0=dim1.height();
-	
-	int xframe=x;
-	int yframe=y;
-	  
-//	int const yframe = y - TEXT_TO_INSET_OFFSET - tm.ascent();
-//	int const xframe = x + TEXT_TO_INSET_OFFSET / 2;
-
-	int x1[8],y1[8];
 
 	if (drawFrame_ || pi.full_repaint) {
-	  
-	//Calculate points of polygon of inset 
-	x1[0]=xframe-TEXT_TO_INSET_OFFSET;		y1[0]=yframe-h0 +2*TEXT_TO_INSET_OFFSET;
-	x1[1]=xframe-TEXT_TO_INSET_OFFSET;		y1[1]=yframe+2*TEXT_TO_INSET_OFFSET;
-	x1[2]=xframe-TEXT_TO_INSET_OFFSET;		y1[2]=yframe+2*TEXT_TO_INSET_OFFSET;
-	x1[3]=xframe-TEXT_TO_INSET_OFFSET;		y1[3]=yframe+h-h0+2*TEXT_TO_INSET_OFFSET;
-	x1[4]=xframe+w2+2*TEXT_TO_INSET_OFFSET;		y1[4]=yframe+h-h0+2*TEXT_TO_INSET_OFFSET;
-	x1[5]=xframe+w2+2*TEXT_TO_INSET_OFFSET;		y1[5]=yframe+h-2*h0+2*TEXT_TO_INSET_OFFSET;
-	x1[6]=xframe+w1+2*TEXT_TO_INSET_OFFSET;		y1[6]=yframe+h-2*h0+2*TEXT_TO_INSET_OFFSET;
-	x1[7]=xframe+w1+2*TEXT_TO_INSET_OFFSET;		y1[7]=yframe-h0+2*TEXT_TO_INSET_OFFSET;
-	
-	if (pi.full_repaint){
-	//polygon is divided into two rectangles to fill
-	      pi.pain.fillRectangle(xframe-TEXT_TO_INSET_OFFSET,
-				    yframe-h0+2*TEXT_TO_INSET_OFFSET,
-				    w1+2*TEXT_TO_INSET_OFFSET,
-				    h-h0,
-				    pi.backgroundColor(this));
-	      pi.pain.fillRectangle(xframe-TEXT_TO_INSET_OFFSET,
-				    yframe+2*TEXT_TO_INSET_OFFSET,
-				    w2+2*TEXT_TO_INSET_OFFSET,
-				    h-h0,
-				    pi.backgroundColor(this));
-	      
-	}
-	
-	if (drawFrame_)
-		pi.pain.polygon(x1, y1, 8, frameColor());
-
-	}
-
-
-
-	
-	/*if (drawFrame_ || pi.full_repaint) {
 		int const w = tm.width() + TEXT_TO_INSET_OFFSET;
 		int const yframe = y - TEXT_TO_INSET_OFFSET - tm.ascent();
 		int const h = tm.height() + 2 * TEXT_TO_INSET_OFFSET;
@@ -281,7 +223,7 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const
 
 		if (drawFrame_)
 			pi.pain.rectangle(xframe, yframe, w, h, frameColor());
-	}*/
+	}
 	ColorCode const old_color = pi.background_color;
 	pi.background_color = pi.backgroundColor(this, false);
 

Reply via email to